﻿// メニュー機能「メッセージをスキップ」
[Macro name="MsgSkip"]
	[Skip ?sysSkip]
[EndMacro]

// メニュー機能「メッセージ速度 - *」
[Macro name="ChgMsgSpeed" export=true]
	// 一旦、項目名をリセットする
	[SetContextMenu id=2 caption="即時表示"]
	[SetContextMenu id=3 caption="最速"]
	[SetContextMenu id=4 caption="速い"]
	[SetContextMenu id=5 caption="普通"]
	[SetContextMenu id=6 caption="遅い"]

	[If exp="%speed == 0"]
		// 即時表示
		[SetContextMenu id=2 caption="即時表示　<-"]
		[SetSystem msgSpd_Normal=0]
	[ElseIf exp="%speed == 1"]
		// 最速
		[SetContextMenu id=3 caption="最速　<-"]
		[SetSystem msgSpd_Normal=10]
	[ElseIf exp="%speed == 2"]
		// 速い
		[SetContextMenu id=4 caption="速い　<-"]
		[SetSystem msgSpd_Normal=30]
	[ElseIf exp="%speed == 3"]
		// 普通
		[SetContextMenu id=5 caption="普通　<-"]
		[SetSystem msgSpd_Normal=50]
	[ElseIf exp="%speed == 4"]
		// 遅い
		[SetContextMenu id=6 caption="遅い　<-"]
		[SetSystem msgSpd_Normal=70]
	[Else]
		// 普通
		[SetContextMenu id=5 caption="普通　<-"]
		[SetSystem msgSpd_Normal=50]
	[EndIf]

	// コンテキストメニューの設定を更新する
	[UpdateContextMenu]
	// システム設定情報を保存する
	[SaveSystem]
[EndMacro]

// メニュー機能「ページ末まで一気に表示切り替え」
[Macro name="ChgPageDash"]
	// 現在の設定値を反転する(true <-> false)
	[If exp="#System.pageDash==true"]
		[SetSystem pageDash=false]
	[Else]
		[SetSystem pageDash=true]
	[EndIf]

	[SaveSystem]
[EndMacro]

// メニュー機能「オートモード」
[Macro name="ChgAutoMode"]
	// 現在の設定値を反転する(ON <-> OFF)
	[If exp="#SystemSts.autoMode==ON"]
		[AutoMode OFF]
	[Else]
		[AutoMode ON]
	[EndIf]
[EndMacro]

// メニュー機能「オートモードウェイト」
[Macro name="ChgAutoModeWait"]
	[SetSystem autoMode_Wait=%time]
	[SaveSystem]
[EndMacro]

// メニュー機能「メッセージを隠す」
[Macro name="HideMessage"]
	[HideMsg]
[EndMacro]

// メニュー機能「履歴をみる」
[Macro name="DisplayHistory"]
	[DispHistory]
[EndMacro]

// メニュー機能「画面表示モード」
[Macro name="ChgScreenMode"]
	[SetSystem screenMode=%mode]
	[SaveSystem]
[EndMacro]

// メニュー機能「ゲームセーブ」
[Macro name="ExecSave" export=true]
	[If exp="%chk_ow==true"]
		// 上書き確認指示あり
		// 指定番号のセーブデータの情報を取得する
		[GetSaveName no=%no var=tmpName rslt=tmpRslt]

		[If exp="@tmpRslt==true"]
			// 指定番号のセーブデータは既に存在する
			[Var tmpMsg="%no+'番のデータを上書きします。\rよろしいですか？'"]
			[MsgBox title="上書き確認" msg=@tmpMsg btnCap=はい,いいえ defBtn=1 var=selIdx]

			[If exp="@selIdx==1"]
				// 「いいえ」を選択
				[DelVar name=tmpName,tmpRslt,tmpMsg,selIdx]
				[ExitMacro]
			[EndIf]
		[EndIf]

		[DelVar name=tmpName,tmpRslt,tmpMsg,selIdx]
	[EndIf]

	// セーブを実行する
	[SaveGame no=%no|0]

	// 指定番号が0～5ならセーブ・ロードのメニュー項目を更新する
	[If exp="%no >= 0 && %no <= 5"]
		[UpdateSaveLoadMenuNo no=%no]
	[EndIf]
[EndMacro]

// メニュー機能「ゲームロード」
[Macro name="ExecLoad" export=true]
	[LoadGame no=%no|0 afterDel=%afterDel|false]
[EndMacro]

// メニュー機能「セーブデータ削除」
[Macro name="DelSaveData" export=true]
	// 指定セーブデータを削除する
	[DelSave no=%no|0]

	// 指定番号が0～5ならセーブ・ロードのメニュー項目を更新する
	[If exp="%no >= 0 && %no <= 5"]
		[UpdateSaveLoadMenuNo no=%no]
	[EndIf]
[EndMacro]

// 全セーブ／ロードメニュー項目更新
[Macro name="UpdateSaveLoadMenu"]
	[Var tmpNo=0]

	[While exp="@tmpNo<=5"]
		[UpdateSaveLoadMenuNo no=@tmpNo]
		[Var tmpNo="@tmpNo+1"]
	[Loop]

	[DelVar name=tmpNo]
[EndMacro]

// セーブ／ロードメニュー項目更新
[Macro name="UpdateSaveLoadMenuNo"]
	// 指定番号のセーブデータの情報を取得する
	// (セーブデータがない場合、tmpNameには「NO DATA」が格納される)
	[GetSaveName no=%no var=tmpName rslt=tmpRslt]

	// セーブ名の頭に「: 」を付加する
	[Var tmpName="':　'+@tmpName"]

	[If exp="%no == 0"]
		// 指定番号のセーブデータはクイックセーブ用
		[ChgSysMenuItem id=MENU_LOAD no=%no enabled=@tmpRslt]
		[SetContextMenu id=10 enabled=@tmpRslt]
		[UpdateContextMenu]
	[Else]
		// 指定番号のセーブデータはクイックセーブ用以外
		[ChgSysMenuItem id=MENU_SAVE no=%no caption=@tmpName]
		[ChgSysMenuItem id=MENU_LOAD no=%no caption=@tmpName enabled=@tmpRslt]
	[EndIf]

	[DelVar name=tmpName,tmpRslt]
[EndMacro]

// メニュー機能「コンフィグ画面表示」
// (<menuType>0:セーブ画面 1:ロード画面 2:削除画面 3:設定画面)
[Macro name="DispConfig"]
	// コンフィグ画面が参照する変数にメニュー種別を格納する
	[Var s_MenuType=%menuType _read_=true]

	// 上位階層にコンフィグ画面を読み込む(コンフィグ画面が終了するまで待機)
	[LoadMovieLv level=1 path="./resorce/System/TotalMenu.swf" volType=SYSEV]

	[DelVar name=s_MenuType]
[EndMacro]

// メニュー機能「最初に戻る」
[Macro name="ReturnTitle" export=true]
	[InitGame path="./script/first.txt" label="Start"]
[EndMacro]

// メニュー機能「終了する」
[Macro name="EndGame" export=true]
	[If exp="%confirm==false"]
		// 終了確認不要が指定されている
		[ExitSystem]
		[ExitFunction]
	[EndIf]

	[MsgBox title="終了の確認" msg="終了しますか？\r（※終了しない場合はウインドウを閉じて終了してください）" btnCap=はい,いいえ defBtn=1 var=selIdx]

	[If exp="@selIdx==0"]
		// 「はい」を選択
		[ExitSystem]
	[EndIf]
[EndMacro]

// メニュー機能「このソフトについて」
[Macro name="DispAbout"]
	[MsgBox path_BG="./resorce/System/About_LemoNovel.swf" sizeMethod=PICTURE]
[EndMacro]

// 選択前処理
[Macro name="PreSelect"]
	// 履歴処理を一時的にＯＦＦ
	[History OFF]
	// メッセージを即時表示にする
	[MsgLayer speed_Normal=0]
[EndMacro]

// 選択後処理
[Macro name="AfterSelect"]
	[ClearMsg]
	// メッセージ速度を元に戻す
	[MsgLayer speed_Normal=user]
	// 履歴処理を再開
	[History ON]
[EndMacro]

// 背景切替
[Macro name="ChgBG"]
	[If exp="%notMsg != true"]
		// 切り替え前のメッセージレイヤーの非表示化が指定されている
		[MsgLayer visible=false]
	[EndIf]

	// 指定された背景を表示する
	[LoadBG path=%path regist=%regist|true]
	[SetFixedBGTrans mode=%mode|"crossfade" path=%path2|"" time=%time|500 skip=%skip|true]
	[StartTrans]

	[If exp="%notMsg != true"]
		// 切り替え前に非表示化したメッセージレイヤーを表示状態に戻す
		[MsgLayer visible=true]
	[EndIf]
[EndMacro]

// キャラクター表示
[Macro name="ShowChar"]
	[If exp="%msgOff == true"]
		// 表示前のメッセージレイヤーの非表示化が指定されている
		[MsgLayer visible=false]
	[EndIf]

	// 指定されたキャラクターを表示する
	[LoadChar id=%id path=%path regist=%regist|false]
	[SetFixedCharTrans id=%id mode=%mode|"fadein" time=%time|500 posX=%posX|160 posY=%posY|160]
	[StartTrans]

	[If exp="%msgOn == true"]
		// 表示後のメッセージレイヤーの表示化が指定されている
		[MsgLayer visible=true]
	[EndIf]
[EndMacro]

// キャラクター非表示
[Macro name="HideChar"]
	// 指定されたキャラクターを非表示化する
	[SetFixedCharTrans id=%id mode=%mode|"fadeout" time=%time|200]
	[StartTrans]
[EndMacro]

// 既読スキップ確認処理
[Macro name="NotifyAlreadyRead"]
	[If exp="?sceneSkip != OFF"]
		// シーンスキップの設定がOFFなら処理しない
		[ExitMacro]
	[EndIf]

	// 現在のセーブ設定を保存する(既に無効の場合があるため)
	[Var befSave="#GameSts.saveSetting"]

	// セーブを一時的に無効にする
	[Save OFF]

	// 現在の表示をクリアする
	[ClearMsg]

	// 現在の表示状態を保存する
	[GetObjInfo obj=MSG visible=befVisible]
	// アクティブなメッセージレイヤーを表示化する
	// (非表示状態の可能性があるため)
	[MsgLayer visible=true]

	[PreSelect]

	// 確認メッセージを表示
	『[Output msg=%label]』は、既に読んだことがあります。[r]
	スキップしますか？[r]
	[Link]はい[/Link] ・ [Link]いいえ[/Link]
	[StartSelect var=selIdx]

	[AfterSelect]

	// メッセージレイヤーの表示状態を元に戻す
	[MsgLayer visible=@befVisible]

	// セーブ可否を元に戻す
	[Save @befSave]

	[DelVar name=befSave,befVisible]

	[If exp="@selIdx == 0"]
		// 「はい」を選択(次のラベルまでスキップ)
		[Skip NEXT_LABEL]
	[EndIf]
[EndMacro]

// ゲームロード完了イベント
[Macro name="SysEv_CompLoadGame"]
	// メニュー項目の表示を更新する
	[UpdateSaveLoadMenu]
	// メッセージレイヤーのフォントをシステムでの設定で更新する
	// (※これはフォント選択ダイアログサンプル用の処理です)
	[UpdateMsgLayerFont]
[EndMacro]

// リンク選択モードタイムアウト処理
[Macro name="NotifyTimeout" export=true]
	[EndSelect]
[EndMacro]

// サンプルセーブ／ロード画面
[Macro name="TestSaveLoad"]
	// システムメニューを無効化する
	[SetSysMenu enabled=false]
	// 現在のセーブ設定を保存する
	[Var befSave="#GameSts.saveSetting"]
	// セーブポイントの更新を無効にする
	[Save UPD_OFF]

	// メッセージレイヤーを１枚追加生成する
	[Var topId=#MsgLayer.count]
	[ChgLayerCnt *msgLayer="@topId + 1"]

	// 生成したメッセージレイヤーをアクティブにする
	[ChgMsgLayer id=@topId]
	// 生成したメッセージレイヤーを画面サイズにし、最前面に表示する
	[MsgLayer id=@topId visible=true posX=0 posY=0 width=#System.width height=#System.height alpha=85 topMost=true path_BG=""]

	[PreSelect]

	[If exp="%mode==SAVE"]
		セーブ
	[Else]
		ロード
	[EndIf]
	するデータを選択していください。

	[Var stIdx=1]

	[RegistBtnTemp name=MENU font_Name=azuki_font font_Embed=true font_Size=26 font_Color=0xFFFFFF font_Color_Point=0xFF8040 font_Color_Press=0xC0C0C0 font_Color_Invalid=0xC0C0C0 edge_Visible=true]

	[While exp="true"]
		[Var tmpCnt=@stIdx edIdx="@stIdx + 10"]

		[While exp="@tmpCnt < @edIdx"]
			// セーブデータ名を取得
			[GetSaveName no=@tmpCnt var=tmpName rslt=tmpRslt]
			[Var tmpName="@tmpCnt + ':　' + @tmpName"]

			// 先頭揃え
			[If exp="@tmpCnt < 10"]
				[Var tmpName="'  ' + @tmpName"]
			[ElseIf exp="@tmpCnt < 100"]
				[Var tmpName="' ' + @tmpName]
			[EndIf]

			// セーブデータ名でボタンを生成
			[If exp="%mode==LOAD && @tmpRslt==false"]
				// ロードでデータなしは選択不可
				[Button id=@tmpCnt group=SAVELOAD dstLayer=MSG dstId=@topId posX=30 *posY="70 + 39 * ((@tmpCnt - 1) mod 10)" caption=@tmpName enabled=false template=MENU]
			[Else]
				// セーブならいずれも選択可能
				[Button id=@tmpCnt group=SAVELOAD dstLayer=MSG dstId=@topId posX=30 *posY="70 + 39 * ((@tmpCnt - 1) mod 10)" caption=@tmpName template=MENU]
			[EndIf]

			[Var tmpCnt="@tmpCnt + 1"]
		[Loop]

		[Button id=PAGE_PREV group=SAVELOAD dstLayer=MSG dstId=@topId posX=190 posY=480 caption="＜＜前のページ" template=MENU]
		[Button id=PAGE_NEXT group=SAVELOAD dstLayer=MSG dstId=@topId posX=430 posY=480 caption="次のページ＞＞" template=MENU]
		[Button id=RETURN group=SAVELOAD dstLayer=MSG dstId=@topId posX=375 posY=520 caption="戻る" template=MENU]

		[StartSelectBtn group=SAVELOAD var=SL_selId delBtn=false]

		[If exp="@SL_selId==PAGE_NEXT"]
			// 『次のページ』を押下
			[Var stIdx="@stIdx + 10"]

			[If exp="@stIdx > 100"]
				// 最終ページなら先頭ページにする
				[Var stIdx=1]
			[EndIf]
		[ElseIf exp="@SL_selId==PAGE_PREV"]
			// 『前のページ』を押下
			[Var stIdx="@stIdx - 10"]

			[If exp="@stIdx < 0"]
				// 先頭ページなら最終ページにする
				[Var stIdx=91]
			[EndIf]
		[ElseIf exp="@SL_selId!=RETURN"]
			// いずれかのデータを選択
			[If exp="%mode==SAVE"]
				// セーブを実行する
				[ExecSave no=@SL_selId chk_ow=true]
			[Else]
				// ロードを実行する
				[ExecLoad no=@SL_selId]
				[MsgBox title="ロード失敗" msg="ゲームデータのロードに失敗しました。" btnCap=閉じる]
			[EndIf]
		[EndIf]

		[DelButton group=SAVELOAD]

		[If exp="@SL_selId==RETURN"]
			// 『戻る』を押下
			[Break]
		[EndIf]
	[Loop]

	[AfterSelect]

	// 使用済みのレイヤーを破棄する
	[ChgMsgLayer *id="@topId - 1"]
	[ChgLayerCnt msgLayer=@topId]

	// セーブポイントの更新を有効に戻す
	[Save @befSave]

	[DelVar name=befSave,SL_selId,stIdx,edIdx,tmpCnt,tmpName,tmpRslt,topId]

	// システムメニューを有効化する
	[SetSysMenu enabled=true]

	// 押下したボタンを有効状態に戻す
	[ChgButton id=%btnId|LOAD enabled=true]
[EndMacro]

// メニュー機能「音量変更」
[Macro name="ChgBGMVol"]
	[SetSystem bgmVolume=%vol]
	[SaveSystem]
[EndMacro]
[Macro name="ChgSndVol"]
	[SetSystem sndVolume=%vol]
	[SaveSystem]
[EndMacro]
[Macro name="ChgSysEvVol"]
	[SetSystem sysEvVolume=%vol]
	[SaveSystem]
[EndMacro]

// メニュー機能「ミュート」
[Macro name="ChgMuteSts"]
	[If exp="#System.muteSts==true"]
		[SetSystem muteSts=false]
	[Else]
		[SetSystem muteSts=true]
	[EndIf]
	[SaveSystem]
[EndMacro]

// メニュー機能「音量設定パネル」
[Macro name="ShowVolPanel"]
	[LoadMovieLv level=1 path="./resorce/System/VolumePanel.swf"]
[EndMacro]

// 全メッセージレイヤーへのフォント反映処理
// (フォント設定ダイアログ用の処理です)
[Macro name="UpdateMsgLayerFont"]
	[If exp="?msgFont == undefined"]
		// フォントの設定がなければ処理しない
		[ExitMacro]
	[EndIf]

	// メッセージレイヤーのデフォルト設定に反映する
	[MsgLayer id=DEFAULT font_Name=?msgFont font_Embed=?msgFontEmbed font_Name_Rb=?msgFont font_Embed_Rb=?msgFontEmbed]

	// 現時点で生成されている全メッセージレイヤーの設定に反映する
	[Var tmpCnt=0]
	[While exp="@tmpCnt < #MsgLayer.count"]
		[MsgLayer id=@tmpCnt font_Name=?msgFont font_Embed=?msgFontEmbed font_Name_Rb=?msgFont font_Embed_Rb=?msgFontEmbed]
		[Var tmpCnt="@tmpCnt + 1"]
	[Loop]
	[DelVar name=tmpCnt]
[End Macro]

// フォント選択ダイアログ表示
[Macro name="ShowFontDlg"]
	[LoadMovieLv level=1 path="./resorce/System/SelectFontDlg.swf" param="normalFonts=\"あずきフォント,みかちゃん,ＭＳ Ｐ明朝,ＭＳ 明朝,ＭＳ Ｐゴシック,ＭＳ ゴシック,Osaka,さざなみ明朝,さざなみゴシック,IPAモナー 明朝,IPAモナー ゴシック\" embedFonts=あずきフォント(埋め込み):azuki_font defFont=?msgFont var_name=tmpName var_embed=tmpEmbed"]

	[If exp="@tmpName != undefined"]
		// フォントが指定されている
		[SysVar msgFont=@tmpName msgFontEmbed=@tmpEmbed]
		[UpdateMsgLayerFont]
		[SaveSystem]
	[EndIf]

	[DelVar name=tmpName,tmpEmbed]
[EndMacro]

// 画面モード切り替えパネル表示
[Macro name="ShowChgScrnPanel"]
	[LoadMovieLv level=1 path="./resorce/System/ChgScreen.swf"]
[EndMacro]

// システム言語切り替え
[Macro name="ChgSysLang"]
	[MsgBox title="言語切り替え確認" msg="【注意】\r言語切り替えを行うには、次の条件を満たしている必要があります。\r実行前に一度、必ず確認してください。\r　１） インターネットに接続可能であること。\r　２） JavaScriptが実行可能であること。\r　３） 既定のHTMLファイル上で実行されていること。\r\r言語切り替え後は、なるべく初めから再スタートするようにしてください。\r処理を続行してもよろしいですか？" btnCap=はい,いいえ defBtn=1 var=selIdx]

	[If exp="@selIdx==1"]
		// 「いいえ」を選択
		[DelVar name=selIdx]
		[ExitMacro]
	[EndIf]

	[DelVar name=selIdx]

	// 言語の切り替えを行う
	[SetSystem language_Sys=%lang]
	[SaveSystem]
[EndMacro]

// URLオープンボタン用マクロ
[Macro name="OpenURL"]
	[GetURL url=%url target="ln_wnd"]
	// ボタンを有効状態に戻す
	[ChgButton id=%btnId|URL_BTN enabled=true]
[EndMacro]

// ＣＧモード画面表示
[Macro name="DispCGMode"]
	// 設定ファイルのパスは任意に変更することが可能です。
	// 相対パスの場合、システム本体を基点とすることに注意してください。
	// (省略時は『./CGModeScrn.ini』になります)
	[Var s_Path_CGMode="./resorce/plug-in/cgmode/CGModeScrn.ini" _read_=true]
	[LoadMovieLv level=1 path="./resorce/plug-in/cgmode/CGModeScrn.swf" volType=SYSEV]
	[DelVar name=s_Path_CGMode]

	// ボタンを有効に戻す
	// 本サンプル専用処理で、通常は必要ありません
	[ChgButton id=PLUGIN_SHOW enabled=true]
[EndMacro]

// 音楽モード画面表示
[Macro name="DispMusicMode"]
	// 設定ファイルのパスは任意に変更することが可能です。
	// 相対パスの場合、システム本体を基点とすることに注意してください。
	// (省略時は『./MusicModeScrn.ini』になります)
	[Var s_Path_MusicMode="./resorce/plug-in/musicmode/MusicModeScrn.ini" _read_=true]
	[LoadMovieLv level=1 path="./resorce/plug-in/musicmode/MusicModeScrn.swf"]
	[DelVar name=s_Path_MusicMode]

	// ボタンを有効に戻す
	// 本サンプル専用処理で、通常は必要ありません
	[ChgButton id=PLUGIN_SHOW enabled=true]
[EndMacro]

// サンプルボタン用マクロ
[Macro name="TestBtn"]
	[If exp="%type==1"]
		[HideMsg]
	[EndIf]
	// ボタンを有効状態に戻す
	[ChgButton id=%btnId|TEST_BTN enabled=true]
[EndMacro]

// 会話中キャラ切替(id=-1で会話終了)
[Macro name="ChgTalker"]
	// 話者の名前を一旦クリアする
	[ClearMsg id=1]

	[If exp="%id < 0"]
		// 会話ではなくなった
		[Var talkCharId=-1 talkCharName='']
		// 名前表示プラグインに非表示化を指示
		[UpdateSWFParam dstLayer=CHAR dstId=4 param="mode=hide"]
		// 名前画像を非表示化する
		[HideChar id=3]
	[Else]
		// 会話中のキャラが指定された
		[Var talkCharId=%id talkCharName="%charName"]
		// 口パクを開始する
		[PlayCharAnim id=@talkCharId mode=play frame=2 wait=false]
		[If exp="@talkCharName != ''"]
			// 履歴に名前を出力する
			[OutHistory *msg="'【' + @talkCharName + '】'"]
			// プラグインに名前の表示を指示する
			[UpdateSWFParam dstLayer=CHAR dstId=4 param="name=@talkCharName"]
			// 名前画像を表示する
			[ShowCharName picId=%picId|1]
			// メッセージレイヤーへの表示
			[MsgLayer id=1 visible=true]
			[Output id=1 msg=@talkCharName]
		[EndIf]
	[EndIf]
[EndMacro]

// 口パクアニメーション停止・再開付きクリック待機
[Macro name="ll"]
	[If exp="@talkCharId >= 0"]
		// 先頭フレームで停止させる(口パクアニメの停止)
		[PlayCharAnim id=@talkCharId mode=stop frame=1]
	[EndIf]
	[l]
	[If exp="%continue != false"]
		// 継続不要が指定されていなければ口パクアニメを再開する
		[PlayCharAnim id=@talkCharId mode=play frame=2 wait=false]
	[EndIf]
[EndMacro]

// 口パクアニメーション停止・再開付きクリック待機(改ページ)
[Macro name="pp"]
	[If exp="@talkCharId >= 0"]
		// 先頭フレームで停止させる(口パクアニメの停止)
		[PlayCharAnim id=@talkCharId mode=stop frame=1]
	[EndIf]
	[p]
	[If exp="%continue != false"]
		// 継続不要が指定されていなければ口パクアニメを再開する
		[PlayCharAnim id=@talkCharId mode=play frame=2 wait=false]
	[EndIf]
[EndMacro]

// コンテキストメニュー初期化
[Macro name="InitContextMenu"]
	[SetContextMenu id=1 caption="メッセージをスキップ" macro="MsgSkip" enabled=true visible=true syncEnabled=Select|HideMsg|Limit_ProgOpe|Limit_Skip]
	[SetContextMenu id=2 caption="即時表示" macro="ChgMsgSpeed" arguments="speed=0" separator=true enabled=true visible=true menuType=system]
	[SetContextMenu id=3 caption="最速" macro="ChgMsgSpeed" arguments="speed=1" enabled=true visible=true menuType=system]
	[SetContextMenu id=4 caption="速い" macro="ChgMsgSpeed" arguments="speed=2" enabled=true visible=true menuType=system]
	[SetContextMenu id=5 caption="普通　<-" macro="ChgMsgSpeed" arguments="speed=3" enabled=true visible=true menuType=system]
	[SetContextMenu id=6 caption="遅い" macro="ChgMsgSpeed" arguments="speed=4" enabled=true visible=true menuType=system]
	[SetContextMenu id=7 caption="メッセージを隠す" macro="HideMessage" separator=true enabled=true visible=true syncEnabled=Doing|HideMsg]
	[SetContextMenu id=8 caption="履歴を見る" macro="DisplayHistory" separator=true enabled=true visible=true syncEnabled=Doing|History|Limit_HistDisp]
	[SetContextMenu id=9 caption="クイックセーブ" macro="ExecSave" arguments="no=0" separator=true enabled=true visible=true syncEnabled=History|Save]
	[SetContextMenu id=10 caption="クイックロード" macro="ExecLoad" arguments="no=0 afterDel=true" enabled=true visible=true syncEnabled=History]
	[SetContextMenu id=11 caption="最初に戻る" macro="ReturnTitle" separator=true enabled=true visible=true syncEnabled=History]
	[UpdateContextMenu]
[EndMacro]

// 右クリックメニュー「メッセージをスキップ」
[Macro name="MsgSkip"]
	[Skip ON]
[EndMacro]

// 右クリックメニュー「メッセージ速度 - *」
[Macro name="ChgMsgSpeed"]
	// 一旦、項目名をリセットする
	[SetContextMenu id=2 caption="即時表示" menuType=system]
	[SetContextMenu id=3 caption="最速" menuType=system]
	[SetContextMenu id=4 caption="速い" menuType=system]
	[SetContextMenu id=5 caption="普通" menuType=system]
	[SetContextMenu id=6 caption="遅い" menuType=system]
	[If exp="%speed == 0"]
		// 即時表示
		[SetContextMenu id=2 caption="即時表示　<-" menuType=system]
		[SetSystem msgSpd_Normal=0]
	[ElseIf exp="%speed == 1"]
		// 最速
		[SetContextMenu id=3 caption="最速　<-" menuType=system]
		[SetSystem msgSpd_Normal=10]
	[ElseIf exp="%speed == 2"]
		// 速い
		[SetContextMenu id=4 caption="速い　<-" menuType=system]
		[SetSystem msgSpd_Normal=30]
	[ElseIf exp="%speed == 3"]
		// 普通
		[SetContextMenu id=5 caption="普通　<-" menuType=system]
		[SetSystem msgSpd_Normal=50]
	[ElseIf exp="%speed == 4"]
		// 遅い
		[SetContextMenu id=6 caption="遅い　<-" menuType=system]
		[SetSystem msgSpd_Normal=70]
	[Else]
		// 普通
		[SetContextMenu id=5 caption="普通　<-" menuType=system]
		[SetSystem msgSpd_Normal=50]
	[EndIf]
	// メニューを更新してシステム情報を保存する
	[UpdateContextMenu]
	[SaveSystem]
[EndMacro]

// メッセージを隠す
[Macro name="HideMessage"]
	[HideMsg]
[EndMacro]

// 履歴をみる
[Macro name="DisplayHistory"]
	[DispHistory]
[EndMacro]

// ゲームセーブ
[Macro name="ExecSave"]
	[SaveGame no=%no|0]
	[UpdateSaveLoadMenu no=%no]
[EndMacro]

// ゲームロード
[Macro name="ExecLoad"]
	[LoadGame no=%no|0 afterDel=%afterDel|false]
[EndMacro]

// コンテキストメニューのセーブ／ロード項目更新
[Macro name="UpdateSaveLoadMenu"]
	[GetSaveName no=%no var=tmpName rslt=tmpRslt]
	[SetContextMenu id=10 enabled=@tmpRslt]
	[UpdateContextMenu]
	[DelVar name=tmpName,tmpRslt]
[EndMacro]

// 最初に戻る
[Macro name="ReturnTitle"]
	[InitGame label="Start"]
[EndMacro]

// 選択前処理
[Macro name="PreSelect"]
	// 履歴処理を一時的にＯＦＦ
	[History OFF]
	// メッセージを即時表示にする
	[MsgLayer speed_Normal=0]
[EndMacro]

// 選択後処理
[Macro name="AfterSelect"]
	[ClearMsg]
	// メッセージ速度を元に戻す
	[MsgLayer speed_Normal=user]
	// 履歴処理を再開
	[History ON]
[EndMacro]

// 背景切替
[Macro name="ChgBG"]
	[If exp="%notMsg != true"]
		[MsgLayer visible=false]
	[EndIf]
	[LoadBG path=%path regist=%regist|true]
	[SetFixedBGTrans mode=%mode|"crossfade" path=%path2|"" time=%time|500 skip=%skip|true]
	[StartTrans]
	[If exp="%notMsg != true"]
		[MsgLayer visible=true]
	[EndIf]
[EndMacro]

// キャラクター表示
[Macro name="ShowChar"]
	[If exp="%msgOff == true"]
		[MsgLayer visible=false]
	[EndIf]
	[LoadChar id=%id path=%path regist=%regist|false]
	[SetFixedCharTrans id=%id mode=%mode|"fadein" time=%time|500 posX=%posX|160 posY=%posY|160]
	[StartTrans]
	[If exp="%msgOn == true"]
		[MsgLayer visible=true]
	[EndIf]
[EndMacro]

// キャラクター非表示
[Macro name="HideChar"]
	[SetFixedCharTrans id=%id mode=%mode|"fadeout" time=%time|200]
	[StartTrans]
[EndMacro]

// 名前画像表示
[Macro name="ShowCharName"]
	// 画像IDから画像ファイルパスを生成する
	[Var picPath="'./resorce/Char/name_' + %picId + '.jpg'"]
	// 名前画像を表示する
	[LoadChar id=3 path=@picPath]
	[SetFixedCharTrans id=3 mode="crossfade" time=200 wait=false]
	[StartTrans]
	// 使用した変数を破棄する
	[DelVar name=picPath]
[EndMacro]

// ゲームロード完了イベント
[Macro name="SysEv_CompLoadGame"]
	[UpdateSaveLoadMenu no=0]

	[If exp="@talkCharName != ''"]
		// メッセージレイヤーの名前表示部の内容を復元する
		[MsgLayer id=1 visible=true]
		[Output id=1 msg=@talkCharName]
	[EndIf]
[EndMacro]
// 会話中キャラ切替(id=-1で会話終了)
[Macro name="ChgTalker"]
	// 話者の名前を一旦クリアする
	[ClearMsg id=1]

	[If exp="%id < 0"]
		// 会話ではなくなった
		[Var talkCharId=-1 talkCharName='']
		// 名前表示プラグインに非表示化を指示
		[UpdateSWFParam dstLayer=CHAR dstId=4 param="mode=hide"]
		// 名前画像を非表示化する
		[HideChar id=3]
	[Else]
		// 会話中のキャラが指定された
		[Var talkCharId=%id talkCharName="%charName"]
		// 口パクを開始する
		[PlayCharAnim id=@talkCharId mode=play frame=2 wait=false]
		[If exp="@talkCharName != ''"]
			// 履歴に名前を出力する
			[OutHistory *msg="'【' + @talkCharName + '】'"]
			// プラグインに名前の表示を指示する
			[UpdateSWFParam dstLayer=CHAR dstId=4 param="name=@talkCharName"]
			// 名前画像を表示する
			[ShowCharName picId=%picId|1]
			// メッセージレイヤーへの表示
			[MsgLayer id=1 visible=true]
			[Output id=1 msg=@talkCharName]
		[EndIf]
	[EndIf]
[EndMacro]

// 口パクアニメーション停止・再開付きクリック待機
[Macro name="ll"]
	[If exp="@talkCharId >= 0"]
		// 先頭フレームで停止させる(口パクアニメの停止)
		[PlayCharAnim id=@talkCharId mode=stop frame=1]
	[EndIf]
	[l]
	[If exp="%continue != false"]
		// 継続不要が指定されていなければ口パクアニメを再開する
		[PlayCharAnim id=@talkCharId mode=play frame=2 wait=false]
	[EndIf]
[EndMacro]

// 口パクアニメーション停止・再開付きクリック待機(改ページ)
[Macro name="pp"]
	[If exp="@talkCharId >= 0"]
		// 先頭フレームで停止させる(口パクアニメの停止)
		[PlayCharAnim id=@talkCharId mode=stop frame=1]
	[EndIf]
	[p]
	[If exp="%continue != false"]
		// 継続不要が指定されていなければ口パクアニメを再開する
		[PlayCharAnim id=@talkCharId mode=play frame=2 wait=false]
	[EndIf]
[EndMacro]



// メッセージを隠す
[Macro name="HideMessage"]
	[HideMsg]
[EndMacro]

// 履歴をみる
[Macro name="DisplayHistory"]
	[DispHistory]
[EndMacro]

// ゲームセーブ
[Macro name="ExecSave"]
	[SaveGame no=%no|0]
	[UpdateSaveLoadMenu no=%no]
[EndMacro]

// ゲームロード
[Macro name="ExecLoad"]
	[LoadGame no=%no|0 afterDel=%afterDel|false]
[EndMacro]

// コンテキストメニューのセーブ／ロード項目更新
[Macro name="UpdateSaveLoadMenu"]
	[GetSaveName no=%no var=tmpName rslt=tmpRslt]
	[SetContextMenu id=10 enabled=@tmpRslt]
	[UpdateContextMenu]
	[DelVar name=tmpName,tmpRslt]
[EndMacro]

// 最初に戻る
[Macro name="ReturnTitle"]
	[InitGame label="Start"]
[EndMacro]

// 選択前処理
[Macro name="PreSelect"]
	// 履歴処理を一時的にＯＦＦ
	[History OFF]
	// メッセージを即時表示にする
	[MsgLayer speed_Normal=0]
[EndMacro]

// 選択後処理
[Macro name="AfterSelect"]
	[ClearMsg]
	// メッセージ速度を元に戻す
	[MsgLayer speed_Normal=user]
	// 履歴処理を再開
	[History ON]
[EndMacro]

// 背景切替
[Macro name="ChgBG"]
	[If exp="%notMsg != true"]
		[MsgLayer visible=false]
	[EndIf]
	[LoadBG path=%path regist=%regist|true]
	[SetFixedBGTrans mode=%mode|"crossfade" path=%path2|"" time=%time|500 skip=%skip|true]
	[StartTrans]
	[If exp="%notMsg != true"]
		[MsgLayer visible=true]
	[EndIf]
[EndMacro]

// キャラクター表示
[Macro name="ShowChar"]
	[If exp="%msgOff == true"]
		[MsgLayer visible=false]
	[EndIf]
	[LoadChar id=%id path=%path regist=%regist|false]
	[SetFixedCharTrans id=%id mode=%mode|"fadein" time=%time|500 posX=%posX|160 posY=%posY|160]
	[StartTrans]
	[If exp="%msgOn == true"]
		[MsgLayer visible=true]
	[EndIf]
[EndMacro]

// キャラクター非表示
[Macro name="HideChar"]
	[SetFixedCharTrans id=%id mode=%mode|"fadeout" time=%time|200]
	[StartTrans]
[EndMacro]

// 名前画像表示
[Macro name="ShowCharName"]
	// 画像IDから画像ファイルパスを生成する
	[Var picPath="'./resorce/Char/name_' + %picId + '.jpg'"]
	// 名前画像を表示する
	[LoadChar id=3 path=@picPath]
	[SetFixedCharTrans id=3 mode="crossfade" time=200 wait=false]
	[StartTrans]
	// 使用した変数を破棄する
	[DelVar name=picPath]
[EndMacro]

// ゲームロード完了イベント
[Macro name="SysEv_CompLoadGame"]
	[UpdateSaveLoadMenu no=0]

	[If exp="@talkCharName != ''"]
		// メッセージレイヤーの名前表示部の内容を復元する
		[MsgLayer id=1 visible=true]
		[Output id=1 msg=@talkCharName]
	[EndIf]
[EndMacro]


