/*============================================================================
	アクションゲーム オプション画面 Option.c
------------------------------------------------------------------------------
												Programmed by Keiichi.Tago.
============================================================================*/
#include "Option.h"

/* ***********************************************************

 未完成 !! ゲームでは使用されていません。今後追加予定・・?

*********************************************************** */

/*============================================================
	オプション画面表示
--------------------------------------------------------------
In  : なし
Out : なし
============================================================*/
void Option( void )
{
	int nKey;
	int nMenu = 0;
	int x, y;
	BOOL bRetTitle = FALSE;
	BOOL bStart = FALSE;
	BOOL bReDraw = TRUE;
	BOOL bUp = FALSE;
	BOOL bDown = FALSE;
	BOOL bLeft = FALSE;
	BOOL bRight = FALSE;
	BOOL bA = FALSE;
	/* 背景初期化 */
	wsBgInit( COLOR_MODE );
	wsBgSetObjectFile( 0, "/rom0/TITLE.CHR" );
	wsBgSetChr( 0, 0, 1, 160 );
	/* パレット設定 ( 16 色中 8 色を選択する) */
	wsPalInit( COLOR_MODE );
	screen_set_scroll( SCREEN1, SystemInf.nBgX >> 7, 0 );
	wsPalSetPalet( 0x7530, 0xFDB9, 15 );
	/* パレット選択 ( 8 色中 4 色を選択する ) */
	palette_set_color( 0, 0x3210 );
	palette_set_color( 4, 0x7520 );
	/* 背景配置 */
	for ( y=0; y<4; y++ ) {
		for ( x=0; x<8; x++ ) {
			wsBgSetVram( SCREEN1, 0, 0, 1, x * 4, y * 8, 0, SETVRAM_NORMAL );
		}
	}
	/* タイトルメニュー */
	screen_fill_char( SCREEN2, 0, 0, 32, 32, 0x800 );
	wsBgSetPutDefineNumber( 257 );
	wsBgPutString( SCREEN2, -1, 9, 1, 4, "アクションゲーム" );
	wsBgPutString( SCREEN2, -1, 10, 3, 4, "ＯＰＴＩＯＮ" );
	wsBgPutString( SCREEN2, -1, 7, 6, 4, "難易度" );
	wsBgPutString( SCREEN2, -1, 7, 8, 4, "タイトルに戻る" );
	wsBgPutString( SCREEN2, -1, 6, 6 + nMenu * 2, 4, "★" );
	while( 1 ) {
		if ( ( SystemInf.nBgX & 127 ) == 0 ) {
			wsPalMove();
		}
		if ( bReDraw == TRUE ) {
			/* 設定を変更したら画面を更新する */
			switch( SystemInf.nDifficulty ) {
				case 0:
					/* 簡単 */
					wsBgPutString( SCREEN2, 379, 16, 6, 4, "簡単　" );
					break;
				case 1:
					/* 普通 */
					wsBgPutString( SCREEN2, 379, 16, 6, 4, "普通　" );
					break;
				case 2:
					/* 難しい */
					wsBgPutString( SCREEN2, 379, 16, 6, 4, "難しい" );
					break;
			}
			bReDraw = FALSE;
		}
		/* 背景をスクロールする */
		screen_set_scroll( SCREEN1, SystemInf.nBgX >> 7, 0 );
		SystemInf.nBgX++;
		SystemInf.nBgX &= 32767;
		/* キー判定 */
		nKey = key_press_check();
		/* 上を押したときの判定 */
		if ( nKey & KEY_UP1 ) {
			bUp = TRUE;
		} else if ( bUp == TRUE ) {
			wsBgPutString( SCREEN2, 382, 6, 6 + nMenu * 2, 1, "　" );
			nMenu--;
			if ( nMenu < 0 ) {
				nMenu = OPTION_MENU_MAX - 1;
			}
			wsBgPutString( SCREEN2, 382, 6, 6 + nMenu * 2, 1, "★" );
			bUp = FALSE;
		}
		/* 下を押したときの判定 */
		if ( nKey & KEY_DOWN1 ) {
			bDown = TRUE;
		} else if ( bDown == TRUE ) {
			wsBgPutString( SCREEN2, 382, 6, 6 + nMenu * 2, 1, "　" );
			nMenu++;
			if ( nMenu >= OPTION_MENU_MAX ) {
				nMenu = 0;
			}
			wsBgPutString( SCREEN2, 382, 6, 6 + nMenu * 2, 1, "★" );
			bDown = FALSE;
		}
		/* 左を押したときの判定 */
		if ( nKey & KEY_LEFT1 ) {
			bLeft = TRUE;
		} else if ( bLeft == TRUE ) {
			switch( nMenu ) {
				case 0:
					/* 難易度ダウン */
					SystemInf.nDifficulty--;
					if ( SystemInf.nDifficulty < 0 ) {
						SystemInf.nDifficulty = 0;
					}
					break;
			}
			bReDraw = TRUE;
			bLeft = FALSE;
		}
		/* 右を押したときの判定 */
		if ( nKey & KEY_RIGHT1 ) {
			bRight = TRUE;
		} else if ( bRight == TRUE ) {
			switch( nMenu ) {
				case 0:
					/* 難易度アップ */
					SystemInf.nDifficulty++;
					if ( SystemInf.nDifficulty >= OPTION_DIFFICULTY_MAX ) {
						SystemInf.nDifficulty = OPTION_DIFFICULTY_MAX - 1;
					}
					break;
			}
			bReDraw = TRUE;
			bRight = FALSE;
		}
		/* A ボタンを押したときの判定 */
		if ( nKey & KEY_A ) {
			bA = TRUE;
		} else if ( bA == TRUE ) {
			switch( nMenu ) {
				case 0:
					/* 難易度アップ */
					SystemInf.nDifficulty++;
					if ( SystemInf.nDifficulty >= OPTION_DIFFICULTY_MAX ) {
						SystemInf.nDifficulty = 0;
					}
					break;
				case 1:
					/* メニュー終了 */
					bRetTitle = TRUE;
					break;
			}
			bReDraw = TRUE;
			bA = FALSE;
		}
		/* スタートボタンを押したときの判定 */
		if ( nKey & KEY_START ) {
			bStart = TRUE;
		} else if ( bStart == TRUE ) {
			bRetTitle = TRUE;
			bStart = FALSE;
			break;
		}
		if ( bRetTitle == TRUE ) {
			/* タイトル画面に戻る */
			break;
		}
	}
	/* 終了処理 */
	screen_set_scroll( SCREEN1, 0, 0 );
	/* タイトルメニューに戻る */
	SystemInf.nPhase = PHASE_TITLEMENU;
}
