/*
	画面スクリプトサンプル
	CGビューア
*/

#INCLUDE
	motion.h


///////////////////////////////////////
// 先読みファイル定義 (イメージのみ)
#PRELOAD
	sys_cgview_tool		// ツールバー
	sys_sl_font_pmax	// ツールバーで使う数字フォント


///////////////////////////////////////
// オブジェクト作成
#DEFINE
	CPLANE	topmask		// ホワイトIN/OUT用の真っ白プレーン
	PLANE	pl[2]		// 表示用プレーン（イベントCG用とツールバー用）

	IMAGE	img_cg		// イベントCG

	BUTTON	btn_tool[5]	// ツールバー用ボタン

	BUTTON	btn_base	// ツールバー全体のボタン化
						// ツールバーの上に乗ってる時は勝手に消えないようにするため

	IMAGE	img_now[3]	// 現在値
	IMAGE	img_max[3]	// 最大値


///////////////////////////////////////
// オブジェクト初期化

// 真っ白プレーン
#OBJECT		COLOR		PRI		SIZE		DISP
topmask		0xffffffff	20000	1280,720	1

// 表示用プレーン
#OBJECT	PRI		VRAM		SIZE		DISP
pl[0]	10000	0,832		1536,830	0
pl[1]	11000	1536,832	1280,720	0

// イベントCG表示用プレーンの表示位置・ベース位置はシーンスクリプトのプレーンに合わせる
#OBJECT	POS		BASE
pl[0]	640,360	768,415

// ツールバーボタン
#OBJECT		FILE			PRI		DISP	ENABLE	PL
btn_tool	sys_cgview_tool	1000	1		0		pl[1]

#OBJECT		ID.N	ID.D	ID.F	ID.P
btn_tool[0]	14		24		34		44		// 最初に戻る
btn_tool[1]	13		23		33		43		// １つ前に戻る
btn_tool[2]	12		22		32		42		// １つ次に進む
btn_tool[3]	11		21		31		41		// 最後に進む
btn_tool[4]	10		20		30		40		// ビューア終了

// ツールバー全体ボタン
#OBJECT		FILE			ID.0	DISP	ENABLE	PL		PRI
btn_base	sys_cgview_tool	0		1		0		pl[1]	900

// ツールバーに表示する数値
#OBJECT		FILE				PRI		DISP	PL
img_now		sys_sl_font_pmax	2000	0		pl[1]
img_max		sys_sl_font_pmax	2010	0		pl[1]

#OBJECT		POS2
img_now[0]	sys_cgview_tool:1000
img_now[1]	sys_cgview_tool:1001
img_now[2]	sys_cgview_tool:1002
img_max[0]	sys_cgview_tool:1010
img_max[1]	sys_cgview_tool:1011
img_max[2]	sys_cgview_tool:1012

// イベントCG
// シーンで使用する画像のベース位置の計算は画面スクリプトの計算とは異なるため
// シーン用ベース位置計算をさせるよう BTYPE を 1 に設定させる
#OBJECT		PRI		BTYPE	DISP	PL
img_cg		10		1		1		pl[0]



////////////////////////////////
// スクリプトスタート
#START
	// キー入力による演出スキップをOFF
	keyskip off
	wait

	// CG観賞フラグのロードとCGリストテーブルのロードを行う
	cgreg_init savegen.dat 0x50 config.int/cglist.dat

	// ツールバー自動消去用設定
	\10 = _MOUSE_X_		// 現在のマウス座標(X)
	\11 = _MOUSE_Y_		// 現在のマウス座標(Y)
	\20 = 45			// フェードアウトを開始させるまでの時間(フレーム)

	// シーンのイメージバンク(eg等)のシフト値の設定
	// config\vram.xml の <shift_x> / <shift_y> の値です
	\300 = 112	// X
	\301 = 40	// Y

	// 登録画像数取得処理へ
	next CHECK_MAX


////////////////////////////////
// 登録されてる画像数（最大値）を取得
#CHECK_MAX
	// 登録画像数を取得
	// $860 はCGリストのテーブルNo（CGモードスクリプトで設定される）
	cgregnum $860 850
	\101 = $850	// 登録画像数を\100へ

	\100 = 1	// 現在表示している番号をリセット

	///////////////////////////////
	// 最大値(\101)を表示

	\200 = \101 / 100		// 100の位
	\201 = (\101%100) / 10	// 10の位
	\202 = \101 % 10		// 1の位
	
	// 表示を行う前に最大値表示用イメージを一旦すべて非表示にする
	img_max disp 0
	
	// 100の位の表示
	if( \200 > 0 )
		// 100の位が1以上なら表示
		img_max[2] settbl 0 \200	// テーブル0番(ID.0)を書き換え
		img_max[2] disp 1
	endif

	// 10の位を表示
	if( (\200 > 0) || (\201 > 0) )
		// 100の位が表示されているか、10の位が1以上なら表示
		img_max[1] settbl 0 \201
		img_max[1] disp 1
	endif

	// 1の位を表示
	img_max[0] settbl 0 \202
	img_max[0] disp 1

	// settbl だけでは表示画像の更新が行われない
	// setid 0 を行うことで更新される
	img_max setid 0


	// イベント画像ロード処理へ
	next CG_LOAD


////////////////////////////////
// イベント画像をロード
#CG_LOAD
	// テーブルNoからイベントCGをロード
	img_cg loadlist2 0 $860 \100-1 0

	// CG表示処理へ
	next CG_IN


////////////////////////////////
// 画像を表示
#CG_IN
	// イベントCG用プレーンとツールバー用プレーンを表示
	pl disp 1

	// ツールバーを表示させたので、表示フラグを立てておく
	\50 = 1

	// 自動消去までのフレームカウンタをリセット
	\30 = 0

	///////////////////////////////
	// 現在値(\100)を表示
	// 内容は最大値と同じなのでコメントは割愛します
	\200 = \100 / 100
	\201 = (\100%100) / 10
	\202 = \100 % 10
	img_now disp 0
	if( \200 > 0 )
		img_now[2] settbl 0 \200
		img_now[2] disp 1
	endif
	if( (\200 > 0) || (\201 > 0) )
		img_now[1] settbl 0 \201
		img_now[1] disp 1
	endif
	img_now[0] settbl 0 \202
	img_now[0] disp 1
	img_now setid 0

	// ツールバーの設定
	btn_tool setid 0	// とりあえずボタン状態をリセット
	if( \100 == 1 )
		// 先頭だったら『戻る』系ボタンをグレーにする
		btn_tool[0] setid 1		// 先頭に戻る
		btn_tool[1] setid 1		// １つ戻る
	endif
	if( \100 == \101 )
		// 最後だったら『進む』系ボタンをグレーにする
		btn_tool[2] setid 1		// １つ進む
		btn_tool[3] setid 1		// 最後に進む
	endif

	// イベントCGをシフト分だけ移動
	img_cg pos \300 \301

	// CGモードから実行された直後はtopmaskをフェードアウトさせる
	if( \0 == 0 )	topmask fade 15 255 0
	\0 = 1

	wait

	// ボタンを有効化
	btn_tool enable 1	// とりあえず全て有効化
	if( \100 == 1 )
		// 先頭だったら『戻る』系ボタンを無効にする
		btn_tool[0] enable 0	// 先頭に戻る
		btn_tool[1] enable 0	// １つ戻る
	endif
	if( \100 == \101 )
		// 最後だったら『進む』系ボタンを無効にする
		btn_tool[2] enable 0	// １つ進む
		btn_tool[3] enable 0	// 最後に進む
	endif
	
	// ツールベースボタンを有効化
	btn_base enable 1

	// 入力待ち（メインループ）処理へ
	next WAIT

////////////////////////////////
// 入力待ち（メインループ）
#WAIT
	// 右クリックで終了
	if( _CLICK_R_ != 0 )	next EXIT


	// マウスホイール↑ 又は PageUp が押された時の処理
	if( _SCRL_U_!=0 || _PAGE_U_!=0 )
		if( \100 > 1 )	// 先頭でなければ処理
			// １つ前に戻る
			\100--
			next CG_LOAD
		endif
	endif

	// マウスホイール↓ 又は PageDown が押された時の処理
	if( _SCRL_D_!=0 || _PAGE_D_!=0 )
		if( \100 < \101 )	// 最後でなければ処理
			// 次に進む
			\100++
			next CG_LOAD
		endif
	endif


	// ツールバーの自動消去処理
	if( \500 == 0 )		// ツールバーの上にカーソルが乗っている場合は処理しない
	
		if( (\10 != _MOUSE_X_) || (\11 != _MOUSE_Y_) )
			// カーソルが動いた場合はツールバーを表示
			call DISP_TOOL
		else
			if( \50 )	// ツールバーが表示されている時だけ処理する

				// 待ち時間カウンタを+1
				\30++

				// 待ち時間経過したか
				if( \30 >= \20 )
					// ツールバーを消す
					call HIDE_TOOL
				endif
			endif
		endif

	endif

////////////////////////////////
// ビューア終了
#EXIT
	// ボタンを無効化
	btn_tool enable 0
	btn_base enable 0

	// ホワイトアウト
	topmask fade 15 0 255
	wait

	// 終了
	exit 0
	next SLEEP


///////////////////////////
// スクリプト終了後の空ループ
#SLEEP


///////////////////////////
// ツールバーを表示
#DISP_TOOL
	// 消去までの待ち時間カウンタをリセット
	\30 = 0

	// 現在のカーソル座標を取得
	\10 = _MOUSE_X_
	\11 = _MOUSE_Y_

	// ツールバーが表示されていない場合はツールバーを表示
	if( \50 == 0 )
		pl[1] stop			// モーションが動いている可能性があるので、一旦停止
		pl[1] disp 1		// 表示させて
		pl[1] fade 15 0 255	// フェードイン
		\50 = 1
	endif


///////////////////////////
// ツールバーを消す
#HIDE_TOOL
	pl[1] stop			// モーションが動いている可能性があるので、一旦停止
	pl[1] fade 15 255 0	// フェードアウト
	\50 = 0



////////////////////////////////////////////////////////////
// ボタンまわりの処理

///////////////////////////
// ツールバーボタン
#btn_tool.FOCUS
	// フォーカス時の画像に切り替え
	@ setid 2

	// カーソルがツールバーに乗っているフラグをON
	\500 = 1

#btn_tool.UNFOCUS
	// 通常時の画像に切り替え
	@ setid 0

	// カーソルがツールバーに乗っているフラグをOFF
	\500 = 0

#btn_tool.PUSH_L
	// 押下時の画像に切り替え
	@ setid 3

	if( @ == 0 )	// 先頭に戻る
		\100 = 1
		next CG_LOAD
	endif
	if( @ == 1 )	// １つ前に戻る
		\100--
		next CG_LOAD
	endif
	if( @ == 2 )	// １つ次に進む
		\100++
		next CG_LOAD
	endif
	if( @ == 3 )	// 最後に進む
		\100 = \101
		next CG_LOAD
	endif
	if( @ == 4 )	// 終了
		\100 = \101
		next EXIT
	endif

#btn_tool.RELEASE_L
	// フォーカス時の画像に切り替え
	@ setid 2



///////////////////////////
// ツールバー本体
#btn_base.FOCUS
	// カーソルがツールバーに乗っているフラグをON
	\500 = 1

#btn_base.UNFOCUS
	// カーソルがツールバーに乗っているフラグをOFF
	\500 = 0

