<!--
//////////////////////////////////////////////////////////////
// 「JS RACING」	(C)1999 Masahiko.Nitanda
// タイトル画面処理モジュール

/////////////////////////////////////////////////////////////////////////////////
// 謝辞
// 「JS RACING」は「ArtRun」を参考にしました。
// 作者の森山氏(http://plaza.harmonix.ne.jp/~jimmeans/)には、とても感謝しています。

/////////////////////////////////////////////////////////////////////
// バージョンチェック
verCheck = 1;	// バージョンチェックフラグ
if (navigator.appName != "Microsoft Internet Explorer"
	|| parseFloat(navigator.appVersion) < 3){
	alert("「Internet Explorer 4.0以上」をご使用してください！");
	verCheck = 0;	// バージョンチェックフラグセット
}

/////////////////////////////////////////////////////////////////////
// キャラ紹介ウィンドウを開く
function OSWnd()
{
	subWnd = window.open("intro.htm", "", "toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,width=580,height=420");
}

/////////////////////////////////////////////////////////////////////
// CommonRAM

SpTID = 0;		// スプラッシュタイマーID
TiTID = 0;		// タイトルタイマーID
SpInt = 500;	// スプラッシュインターバル
TiInt = 200;	// タイトルインターバル
IsL = 0;		// 読込み終了フラグ
WhWind = 3;		// 画面フラグ(0:プレイ、1:操作説明、2:オプション、3:タイトル、4:デモ)

// オプション画面用
HAS = new Array(40, 24);			// ハートサイズ
HAPx = new Array(143, 193, 243);	// ハートX座標
HAPy = new Array(80, 80, 80);		// ハートY座標
HADx = new Array(-2, 0, 2);			// ハートX方向移動量計算用
Ds = 1;		// 拡縮用加算値
EnaKC = 5;	// キーダウン無効カウント数
EnaCnt = 0;	// キーダウン連続キー入力防止用カウント
oldTiInt = 0;	// タイトルインターバル保存用

// タイトル画面用
SelC = 0;	// 選択カーソル位置(0:プレイ、1:操作説明、2:オプション)
LCurPy = 140;	// キャラカーソルY座標

/////////////////////////////////////////////////////////////////////
// インプリメンテーション

// スプラッシュタイマー(LMessSp:読込み中メッセージ)
function IntSp()
{
	clearTimeout(SpTID);	// タイマークリア
	
	// 読込み終了チェック
	if (IsL){
		Cnt = 0;	// カウントリセット
		return;
	}
	
	if (Cnt){
		LMessSp.visibility = "visible";
		Cnt = 0;
	}
	else{
		LMessSp.visibility = "hidden";
		Cnt = 1;
	}

	SpTID = setTimeout("IntSp()", SpInt);	// スプラッシュタイマー設定
}

// オンロードイベント
function IOnL()
{
	IsL = 1;	// 読込み終了フラグセット
	
	// スプラッシュ画面を消し、タイトル画面を表示する
	SpW.style.visibility = "hidden";
	WSp[3].visibility = "visible";
	
	// タイトルタイマーセット
	if (verCheck){
		// キー入力イベント取得開始
		document.onkeydown = KeyDown;
		document.onkeyup = KeyUp;

		TiTID = setTimeout("IntTi()", TiInt);
	}
}

// タイトルタイマー (タイトル、操作説明、オプション)
function IntTi()
{
	clearTimeout(TiTID);

	ret = 0;	// 戻り値

	switch (WhWind){
	case 1:	// 操作説明
		ret = FHT();
		break;
	case 2:	// オプション
		ret = FOp();
		break;
	case 3:	// タイトル
		ret = FTi();
		break;
	}

	if (ret != WhWind){
		// 画面切替		
		// オプションで操作したインターバルを戻す
		if (ret == 2){
			// オプション画面に切替る時
			oldTiInt = TiInt;
			TiInt = PlInt;		// プレイインターバルをセット
		}
		else if (WhWind == 2){
			// オプション画面からタイトルに戻る時
			PlInt = TiInt;	// プレイインターバルに選択インターバルをセット
			PlwI = 3600 / PlInt;
			TiInt = oldTiInt;
			Cnt = 0;
		}
		
		WSp[WhWind].visibility = "hidden";
		WhWind = ret;
		WSp[WhWind].visibility = "visible";
		
		// プレイ又はデモの場合
		if (WhWind == 0){
			initPlRAM();	// プレイデータ初期化
			MRoad();	// 道路ライン表示
			FSideG();	// 道路脇画像表示
			PlTID = setTimeout("IntPl()", PlInt);	// プレイタイマー設定
			
			return;
		}
	}
	
	TiTID = setTimeout("IntTi()", TiInt);	// タイトルタイマー設定
}

// タイトル画面処理
function FTi()
{
	ret = 3;	// 戻り値
	
	if (ON_KEY[2] && !ON_KEY[3]){
		// 上キー
		if (SelC > 0){
			TMenuSp[SelC].color = "#0000ff";
			SelC--;
			TMenuSp[SelC].color = "#ffffff";
			
			// キャラカーソル移動
			LCurPy -= 30;
			TMenuSp[3].top = LCurPy;
		}
	}
	else if (ON_KEY[3] && !ON_KEY[2]){
		// 下キー
		if (SelC < 2){
			TMenuSp[SelC].color = "#0000ff";
			SelC++;
			TMenuSp[SelC].color = "#ffffff";
			
			// キャラカーソル移動
			LCurPy += 30;
			TMenuSp[3].top = LCurPy;
		}
	}
	else if (ON_KEY[4]) ret = SelC;	// Zキー
	
	return ret;
}

// 操作説明画面処理
function FHT()
{
	if (ON_KEY[5]) return 3;	// Xキー：タイトルに戻る
	else return 1;
}

// オプション画面処理
function FOp()
{
	if (ON_KEY[5]) return 3;	// Xキー：タイトルに戻る

	// ハートアニメ
	if (!(Cnt % 16)) Ds *= -1;
	HAS[0] += Ds;
	HAS[1] -= Ds;

	for (i = 0; i < 3; i++){
		HASP[i].width = HAS[0];
		HASP[i].height = HAS[1];
		HASP[i].left = HAPx[i] - HAS[0] / 2 + HAS[0] * HADx[i];
		HASP[i].top = HAPy[i] - HAS[1] / 2;
	}

	SetInt();	// インターバル設定
	Cnt++;	// カウント増加
	
	return 2;
}

// インターバル設定関数
function SetInt()
{
	if (!EnaCnt){
		if (ON_KEY[0] && !ON_KEY[1]){
			// 左キー
			if (pIntD > 0){
				// 設定変更
				pIntD--;
				SIntSP.innerText = IntN[pIntD];
				TiInt = IntD[pIntD];	// インターバル変更
				EnaCnt = EnaKC;	// 連続キー入力の防止
			}
		}
		else if (ON_KEY[1] && !ON_KEY[0]){
			// 右キー
			if (pIntD < 2){
				// 設定変更
				pIntD++;
				SIntSP.innerText = IntN[pIntD];
				TiInt = IntD[pIntD];	// インターバル変更
				EnaCnt = EnaKC;	// 連続キー入力の防止
			}
		}
	}
	else EnaCnt--;	// カウントダウン
}

// -->

