/*
	履歴ウィンドウ

	\10		ログに登録されている最大文章数
	\11		現在表示中の文章番号

	\30		文章の上にカーソルが乗っている場合はその番号  乗ってない場合は-1
	\40		文章が押された時はその番号  押されていない場合は-1


*/

////////////////////////////////
// 他スクリプトを挿入
#INCLUDE
	motion.h		// 各種オブジェクトモーションの定義
	btncode.h		// システムへコマンドを送信する為のサブルーチン集


////////////////////////////////
// 予め読んでおく画像
#PRELOAD
	$str910			// 基本画像
	sys_log_name	// 名前画像


////////////////////////////////
// オブジェクト定義
#DEFINE
	PLANE	pl			// 表示用プレーン
	IMAGE	bg			// 背景（ウィンドウ）
	IMAGE	frame		// ウィンドウフレーム
	LOGSTRING	log		// 履歴文章表示
	SCROLL2	scrl		// スクロールバー
	BUTTON	btn[5]		// 操作ボタン
	IMAGE	help[5]		// バルーンヘルプ
	STRING	name[5]		// 名前
	BUTTON	line[5]		// 各行のボタン
	IMAGE	uf			// ユーザーフォント


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

// 基本プレーン
#OBJECT	SIZE		VRAM	DISP	PRI
pl		1280,720	0,0		0		40000

// 背景ウィンドウとウィンドウフレーム
#OBJECT	FILE	ID.0	PRI		DISP	PL
bg		$str910	0		0		1		pl
frame	$str910	10		1		1		pl

// 履歴用文章
#OBJECT	VRAM	POS2			SIZE2			PRI		DISP	COUNT
log		0,4352	$str910:1000	$str910:1000	40200	1		5

// スクロールバー
#OBJECT		FILE				PRI		DISP	POS2		PL
scrl		sys_log_scroll		1000	1		$str910:21	pl

// 操作ボタン
#OBJECT	FILE	PL	DISP	PRI	ENABLE
btn		$str910	pl	1		100	0

#OBJECT	ID.0	ID.1	ID.2	ID.3
btn[0]	500		550		600		650
btn[1]	501		551		601		651
btn[2]	502		552		602		652
btn[3]	503		553		603		653
btn[4]	504		554		604		654

// ボタンのヘルプ
#OBJECT	FILE	PL	DISP	PRI
help	$str910	pl	0		200

#OBJECT	ID.0
help[0]	700
help[1]	701
help[2]	702
help[3]	703
help[4]	704


// 名前
#OBJECT	PRI		DISP
name	40400	0

#OBJECT	VRAM		POS2			SIZE2
name[0]	1000,4352	$str910:1100	$str910:1100
name[1]	1000,4402	$str910:1101	$str910:1101
name[2]	1000,4452	$str910:1102	$str910:1102
name[3]	1000,4502	$str910:1103	$str910:1103
name[4]	1000,4552	$str910:1104	$str910:1104


// 各文章のボタン（音声再生用）
#OBJECT	FILE	DISP	PRI	ENABLE
line	$str910	0		400	0

#OBJECT	ID.0
line[0]	1200
line[1]	1201
line[2]	1202
line[3]	1203
line[4]	1204

// ユーザーフォント
#OBJECT	FILE			IDN
uf		sys_userfont	-1


// キーボード・ジョイパッド入力設定
#KEYBLOCK	2	//(w,h)	上,下,左,右
0				1,5		-1,-1,-1,1
1				1,5		-1,-1,0,-1

#OBJECT		KEYBLOCK	// (block,x,y)
line[0]		0,0,0
line[1]		0,0,1
line[2]		0,0,2
line[3]		0,0,3
line[4]		0,0,4

btn[0]		1,0,0
btn[1]		1,0,1
btn[2]		1,0,2
btn[3]		1,0,3
btn[4]		1,0,4


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

	// ボタン上にカーソルが無いときにキー操作が行われた時の移動先ボタン
	line[0] noact

	// 文章ボタンとスクロールバーを関連付ける
	line attach scrl

	// ログオブジェクトをセット
	// ログが開かれこのスクリプトが実行されると\0にログオブジェクトがセットされています
	// これをLOGSTRINGオブジェクトにセットすることでログ表示を行うことが出来ます。
	log setlog \0
	wait 1

	// 文章レイアウトを設定
	call STRLAYOUT

	// ウィンドウ不透明度を設定
	call WNDALPHA

	wait 1

	// 最初に表示する名前を設定
	call SETNAME

	\30 = -1

	// ログに登録されている最大文章数を取得
	log max 850
	\10 = $850

	// 現在のログ位置を取得
	log getpos 850
	\11 = $850

	// ユーザーフォント設定
	log userfontobj	uf
	log userfont 0x8740 1
	log userfont 0x8741 2
	log userfont 0x8742 3
	log userfont 0x8743 4
	log userfont 0x8744 5
	log userfont 0x8745 6
	log userfont 0x8746 7
	log userfont 0x8747 8
	log userfont 0x8748 9

	// スクロールバーを設定
	scrl page 0 \10 4	// 最大ライン数と１ページあたりのライン数
	scrl pos \11		// 現在の位置

	// スクロールバーを表示
	scrl disp 1

	// ボタンの有効・無効設定
	call CHECK_BTN

	btn lock 1

	// フェードイン
	pl disp 1
	pl fade 8 0 255
	wait

	// ログ文章表示
	log disp 1

	// スクロールバーと文章ボタンを有効化
	scrl enable 1
	line enable 1

	next WAIT


////////////////////////////////
// 入力待ち（メインループ）
#WAIT
	if( \509 )
		// 環境設定が変更になった場合は設定を適用
		\509 = 0
		call STRLAYOUT
		call WNDALPHA
		log draw	// ログ再描画
	endif

	// 右クリックで終了
	if( _CLICK_R_ != 0 )	next EXIT

	if( _SCRL_U_ != 0 )		next UP			// ↑キー / ホイール↑
	if( _SCRL_D_ != 0 )		next DOWN		// ↓キー / ホイール↓
	if( _PAGE_U_ != 0 )		next P_UP		// PageUpキー
	if( _PAGE_D_ != 0 )		next P_DOWN		// PageDownキー


////////////////////////////////
// 終了
#EXIT
	// ログ文章と名前を消去
	log disp 0
	name disp 0

	// 各種ボタン無効化
	scrl enable 0
	btn enable 0
	line enable 0

	// フェードアウト
	pl fade 8 255 0
	wait

	// 終了
	exit 0
	next SLEEP


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



////////////////////////////////
// １行戻る
#UP
	// 一時的にボタンを無効化
	btn enable 0
	line enable 0
	scrl enable 0
	wait 1

	// 文章の上にカーソルが乗っている場合は、その文章カラーを元に戻す
	if( \30 != -1 )	log blockcolor \30 0

	// １行戻る
	log rev

	// 現在位置を取得
	log getpos 850
	\11 = $850

	// スクロールバーの位置を設定
	scrl pos \11

	// 名前を設定
	call SETNAME

	// ボタン有効化
	call CHECK_BTN
	line enable 1
	scrl enable 1

	next WAIT


////////////////////////////////
// １行進む
// 処理の流れは #UP と同じなので、処理内容はそちらをご覧ください
#DOWN
	btn enable 0
	line enable 0
	scrl enable 0
	wait 1
	if( \30 != -1 )	log blockcolor \30 0
	log next	// １行進む
	log getpos 850
	\11 = $850
	scrl pos \11
	call SETNAME
	call CHECK_BTN
	line enable 1
	scrl enable 1
	next WAIT


////////////////////////////////
// １ページ戻る
// 処理の流れは #UP と同じなので、処理内容はそちらをご覧ください
#P_UP
	btn enable 0
	line enable 0
	scrl enable 0
	wait 1
	log page -1		// １ページ戻る
	log getpos 850
	\11 = $850
	scrl pos \11
	call SETNAME
	call CHECK_BTN
	line enable 1
	scrl enable 1
	next WAIT


////////////////////////////////
// １ページ進む
// 処理の流れは #UP と同じなので、処理内容はそちらをご覧ください
#P_DOWN
	btn enable 0
	line enable 0
	scrl enable 0
	wait 1
	log page 1		// １ページ進む
	log getpos 850
	\11 = $850
	scrl pos \11
	call SETNAME
	call CHECK_BTN
	line enable 1
	scrl enable 1
	next WAIT


////////////////////////////////
// スクロールバーが動かされた
#scrl.SCRL_P
	next SCRL_P	// スクロールバー処理へ移行


////////////////////////////////
// スクロールバーが動かされた時の処理
#SCRL_P
	// 現在の位置を取得
	scrl getpos 850
	if( \11 != $850 )	// 動いたか？
		// ログの位置を更新して再描画
		log pos $850
		log draw

		// 新しい位置を保存
		\11 = $850

		// 名前の設定とボタンチェック
		call SETNAME
		call CHECK_BTN
	endif
	next WAIT


////////////////////////////////
// ウィンドウ不透明度設定
#WNDALPHA
	// この処理はメッセージウィンドウのものと同じ
	getconf 850 wndcolor
	$850 = ($850>>24) * 255 / 100
	bg blend $850


////////////////////////////////
// 文章レイアウト設定
#STRLAYOUT
	// 文章
	log reset
	log layout vdraw 1		// VRAM(文字列用プレーン)に描画する場合は1
	log layout size 18 20 22 25 28	//フォントサイズ(左からSS,S,M,L,LL)
	log layout rsize 8	//ルビサイズ
	log layout margin 0 10 48 0	// 文字表示領域内のマージン(左,上,右,下)
	log layout frame 0		// 文字スクロールスピード
	log layout move 0 10	// 文字間隔・横,縦
	log layout ruby 0		// ルビの位置（ルビが乗る文字からの相対）
	log layout color 255 255 255  0 0 0  255 255 255	// 文字色 普通,影,ルビ色
	log layout indent 1	//カギカッコが付いたときの２行目以降のインデントの有効・無効

	// ボイス無し時のカラー設定
	log layout color   255 255 255  0 0 0  255 255 255	// 通常
	log layout acolor  255 255 255  0 0 0  255 255 255	// フォーカス
	log layout pcolor  255 255 255  0 0 0  255 255 255	// 押下

	// ボイス有り時のカラー設定
	log layout vcolor  123 244 255  0 0 0  123 244 255	// 通常
	log layout vacolor 255 113 113  0 0 0  255 113 113	// フォーカス
	log layout vpcolor 255 113 113  0 0 0  255 113 113	// 押下


	// 名前
	name reset
	name layout vdraw 1		// VRAM(文字列用プレーン)に描画する場合は1
	name layout size 20		//フォントサイズ(1つだけ指定されている場合はSS,S,M,L,LL全てこのサイズ)
	name layout margin 0 0 0 0	// 文字表示領域内のマージン(左,上,右,下)
	name layout frame 0		// 文字スクロールスピード
	name layout color 255 255 255  0 0 0  255 255 255	// 文字色 普通,影,ルビ色


////////////////////////////////
// ボタン処理

// 操作ボタン
#btn.FOCUS
	@ setid 2
	help[@] disp 1

#btn.UNFOCUS
	@ setid 0
	help[@] disp 0

#btn.PUSH_L
	@ setid 3
	if( @ == 0 )	next P_UP
	if( @ == 1 )	next UP
	if( @ == 2 )	next DOWN
	if( @ == 3 )	next P_DOWN
	if( @ == 4 )	next EXIT


// 文章ボタン
#line.FOCUS
	// カーソルが乗った文章の色をフォーカス色へ変更
	log blockcolor @ 1
	\30 = @
	\40 = -1


#line.UNFOCUS
	// カーソルが離れた文章の色を通常色へ変更
	log blockcolor @ 0
	\30 = -1
	\40 = -1

#line.PUSH_L
	\40 = @
	next PLAY_PCM	// 音声再生処理へ

#line.RELEASE_L
	if( \40 != -1 )	log blockcolor \40 1	// フォーカス色に戻す


////////////////////////////////
// 操作ボタン有効・無効
#CHECK_BTN
	btn enable 1
	btn setid 0
	if( \11 == 0 )	// ログの先頭の場合
		btn[1] enable 0
		btn[1] setid 1
		btn[0] enable 0
		btn[0] setid 1
		help[0] disp 0
		help[1] disp 0
	endif
	if( \10-\11 <= 5 )	// ログ終端の場合
		btn[3] enable 0
		btn[3] setid 1
		btn[2] enable 0
		btn[2] setid 1
		help[2] disp 0
		help[3] disp 0
	endif


////////////////////////////////
// 音声再生
#PLAY_PCM
	// 文章の色を押下色に変更
	log blockcolor \40 2

	// ログの文章情報を取得
	\0 = 1010
	\1 = 850
	log lineinfo \11+\40 \0 \1

	// 情報に基づき音声再生
	call _SYS_LOG_PLAYVOICE

	next WAIT


////////////////////////////////
// 名前設定
#SETNAME
	// 現在の位置
	log getpos 850

	// とりあえず名前を全て非表示
	name disp 0
	name clear

	// １行目
	\0 = $850
	\1 = 851
	call _SYS_LOG_GETNAME		// 行の名前を取得
	if( $851 != -1 )
		// 名前がある場合
		name[0] disp 1
		name[0] apend $str851
		name[0] draw -1
	endif

	// ２行目
	\0 = $850+1
	\1 = 851
	call _SYS_LOG_GETNAME
	if( $851 != -1 )
		name[1] disp 1
		name[1] apend $str851
		name[1] draw -1
	endif

	// ３行目
	\0 = $850+2
	\1 = 851
	call _SYS_LOG_GETNAME
	if( $851 != -1 )
		name[2] disp 1
		name[2] apend $str851
		name[2] draw -1
	endif

	// ４行目
	\0 = $850+3
	\1 = 851
	call _SYS_LOG_GETNAME
	if( $851 != -1 )
		name[3] disp 1
		name[3] apend $str851
		name[3] draw -1
	endif

	// ５行目
	\0 = $850+4
	\1 = 851
	call _SYS_LOG_GETNAME
	if( $851 != -1 )
		name[4] disp 1
		name[4] apend $str851
		name[4] draw -1
	endif



////////////////////////////////
// 環境設定が変更になった時にシステムから呼ばれるヘッダ
#LOG_CHANGECONFIG
	\509 = 1	// 変更フラグON


////////////////////////////////
// ログが消滅する時にシステムから呼ばれるヘッダ
#LOG_DESTROY
	log setlog 0



