/* SCEI CONFIDENTIAL
PSML Page Development Tool Release 1.0
Copyright (C) 2002 Sony Computer Entertainment Inc.
All Rights Reserved.
*/

#if defined _bn_defs_included
  #endinput
#endif
#define _bn_defs_included


// 注意! define はちょっと怪しいということで,
// const により代りを実現しています。


//////////////////////////////////
// フォントサイズ
//////////////////////////////////
// -- 通常 --
//const FONTSIZE_NORMAL = (18);
//const FONTSIZE_TITLE = (20);
//const FONTSIZE_BTNHELP = (14);
const FONTSIZE_TITLE = (17);
const FONTSIZE_NORMAL = (15);
const FONTSIZE_BTNHELP = (14);
const FONTSIZE_MINIINFO = (12);

//////////////////////////////////
// ダイアログに共通
//////////////////////////////////
// -- サイズ --
const float: DIALOG_WIDTH = (400.0);
const float: DIALOG_HEIGHT = (260.0);

// -- 通常 --
const float: DIALOG_NORMAL_COL_R = (0.0000);
const float: DIALOG_NORMAL_COL_G = (0.2353);
const float: DIALOG_NORMAL_COL_B = (0.3922);

// -- エラー --
const float: DIALOG_ERROR_COL_R = (0.5490);
const float: DIALOG_ERROR_COL_G = (0.0784);
const float: DIALOG_ERROR_COL_B = (0.1961);

//////////////////////////////////
// 基本的なラベルに共通
//////////////////////////////////
// -- 通常ラベル 選択できない(白)  --
const float: LABEL_NORMAL_COL_R = (0.7843);
const float: LABEL_NORMAL_COL_G = (0.7843);
const float: LABEL_NORMAL_COL_B = (0.7843);
const float: LABEL_NORMAL_COL_A = (1.0);

const float: LABEL_TITLE_COL_R = (0.902);
const float: LABEL_TITLE_COL_G = (0.902);
const float: LABEL_TITLE_COL_B = (0.215);
const float: LABEL_TITLE_COL_A = (1.0);

// -- 通常ラベル 選択できる(青) --
#if 0
const float: LABEL_TOUCHABLE_COL_R = (0.235);
const float: LABEL_TOUCHABLE_COL_G = (0.588);
const float: LABEL_TOUCHABLE_COL_B = (0.902);
#endif
// 5/03 デザイン修正(明るく)
const float: LABEL_TOUCHABLE_COL_R = (0.215);
const float: LABEL_TOUCHABLE_COL_G = (0.708);
const float: LABEL_TOUCHABLE_COL_B = (0.999);
const float: LABEL_TOUCHABLE_COL_A = (1.0);

const float: LABEL_DISABLED_COL_R = (0.055);
const float: LABEL_DISABLED_COL_G = (0.288);
const float: LABEL_DISABLED_COL_B = (0.602);
const float: LABEL_DISABLED_COL_A = (1.0);
//const float: LABEL_FOCUSED_COL_A = (0.8);
const float: LABEL_FOCUSED_COL_A = (1.0);

//////////////////////////////////
// MENUに共通
//////////////////////////////////
// -- メニューのアイテム色 --
const float: MENU_ITEM_COL_R = (LABEL_TOUCHABLE_COL_R);
const float: MENU_ITEM_COL_G = (LABEL_TOUCHABLE_COL_G);
const float: MENU_ITEM_COL_B = (LABEL_TOUCHABLE_COL_B);
const float: MENU_ITEM_COL_A = (LABEL_TOUCHABLE_COL_A);
const float: MENU_ITEM_COL_FOCUS_A = (1.0);

// -- メニューのタイトル色 --
const float: MENU_TITLE_COL_R = (LABEL_NORMAL_COL_R);
const float: MENU_TITLE_COL_G = (LABEL_NORMAL_COL_G);
const float: MENU_TITLE_COL_B = (LABEL_NORMAL_COL_B);
const float: MENU_TITLE_COL_A = (LABEL_NORMAL_COL_A);


/////////////////////////////////
// 各チャンネルの CAMERA に共通
/////////////////////////////////
// -- カメラの基準ベース座標 --
const float: CAMERA_BASE_POS_X = (0.0);
const float: CAMERA_BASE_POS_Y = (0.0);
const float: CAMERA_BASE_POS_Z = (0.0);

// -- CHANNELMENU時カメラの基準ベース座標 --
const float: CAMERA_MENU_LEFT_POS_X = (-280.0);
const float: CAMERA_MENU_LEFT_POS_Y = (CAMERA_BASE_POS_Y);
const float: CAMERA_MENU_LEFT_POS_Z = (CAMERA_BASE_POS_Z);

// -- OBJECTMENU時カメラの基準ベース座標 --
const float: CAMERA_MENU_RIGHT_POS_X = (300.0);
const float: CAMERA_MENU_RIGHT_POS_Y = (CAMERA_BASE_POS_Y);
const float: CAMERA_MENU_RIGHT_POS_Z = (CAMERA_BASE_POS_Z);

// -- カメラ視線の基準ベース座標 --
const float: CAMERA_BASE_LOOK_X = (CAMERA_BASE_POS_X);
const float: CAMERA_BASE_LOOK_Y = (CAMERA_BASE_POS_Y);
const float: CAMERA_BASE_LOOK_Z = (-100.0);

// -- CHANNELMENU時カメラの基準ベース座標 --
const float: CAMERA_MENU_LEFT_LOOK_X = (CAMERA_MENU_LEFT_POS_X);
const float: CAMERA_MENU_LEFT_LOOK_Y = (CAMERA_MENU_LEFT_POS_Y);
const float: CAMERA_MENU_LEFT_LOOK_Z = (CAMERA_BASE_LOOK_Z);

// -- OBJECTMENU時カメラの基準ベース座標 --
const float: CAMERA_MENU_RIGHT_LOOK_X = (CAMERA_MENU_RIGHT_POS_X);
const float: CAMERA_MENU_RIGHT_LOOK_Y = (CAMERA_MENU_RIGHT_POS_Y);
const float: CAMERA_MENU_RIGHT_LOOK_Z = (CAMERA_BASE_LOOK_Z);


////////////////////////////////////
// TextureScale に関係する項目
////////////////////////////////////
// -- 右側フォーカス枠内のテクスチャスケール --
const float: PICT_SCALE_CHANNELLOGO = (256.0);

// -- 右側フォーカス枠内のテクスチャスケール --
const float: PICT_SCALE_FOCUSBOX = (256.0);

// -- thumbnail のテクスチャスケール --
const float: PICT_SCALE_THUMBNAIL = (64.0);


////////////////////////////////////
// 各チャンネルのGUI部品に関する情報
////////////////////////////////////
// -- album menu のラジオボタン配置(左側のラジオボタン) ------
const float: ALBUM_MENU_INTERVAL = (0.11);	// 40to60 / 448
//const float: ALBUM_MENU_ALIGN_LEFT = (0.1156); // 74/640
const float: ALBUM_MENU_ALIGN_LEFT = (0.17); // 74/640
const float: ALBUM_MENU_ALIGN_CENTER = (0.5); //
const float: ALBUM_MENU_FONT_PT = (FONTSIZE_TITLE); // 74/640

// ----- album list の配置情報 --------
const float: ALBUM_LIST_FOCUSPOS_X = (0.7625); // 488/640
const float: ALBUM_LIST_FOCUSPOS_Y = (0.5); //
//const float: ALBUM_LIST_FOCUSPOS_Y = (0.4419); // 198/448

// ----- フォーカスボックス --------
const float: ALBUM_LIST_FOCUSBOX_W = (0.3593); // 230/640
const float: ALBUM_LIST_FOCUSBOX_H = (0.5133); // 230/448

// ----- 表示文字列  ------
const float: ALBUM_TITLE_ALIGN_LEFT = (0.5); // 320/640
const float: ALBUM_ARTIST_ALIGN_LEFT = (0.5); // 320/640
const float: ALBUM_INFO_ALIGN_RIGHT = (0.91);
//     = (ALBUM_LIST_FOCUSPOS_X+ALBUM_LIST_FOCUSBOX_W/2.0); // 320/640

const float: ALBUM_TITLE_POS_Y = (0.22775); // 0.46875-0.241
//     = (ALBUM_LIST_FOCUSPOS_Y-ALBUM_LIST_FOCUSBOX_Y/2.0); // 320/640
const float: ALBUM_ARTIST_POS_Y = (0.26775); // 0.46875-0.241 +0.04
//     = (ALBUM_LIST_FOCUSPOS_Y-ALBUM_LIST_FOCUSBOX_Y/2.0); // 320/640
const float: ALBUM_INFO_POS_Y = (0.74); // 0.46875+0.241 +0.04 = 0.75
//     = (ALBUM_LIST_FOCUSPOS_Y+ALBUM_LIST_FOCUSBOX_Y/2.0+0.03); // 320/640

//const float: ALBUM_TITLE_FONT_PT = (18); // 320/640
//const float: ALBUM_ARTIST_FONT_PT = (18); // 320/640
//const float: ALBUM_INFO_FONT_PT = (14); // 320/640


////////////////////////////////////
// 画面(出力モニタ&解像度等)情報に関係する項目
////////////////////////////////////
// 画面サイズ取得
stock bn_get_viewport( &float:vpw, &float:vph )
{
	static w = 0, h = 0, d = 0;
	if( ! w ){ w = GetSystemParam( SYSTEM_PARAM_VIEWPORT_W ); }
	if( ! h ){ h = GetSystemParam( SYSTEM_PARAM_VIEWPORT_H ); }
	//wndGetScreen(WND_SELF, w, h, d);
	vpw = float(w);
	vph = float(h);
}

// 2Dpixel値と3Dpixel値の値が1.0=1.0でマッチする 3D 座標を
// 画面左上からのオフセットで取得する関数
stock bn_get_2Dto3D( &float:x,&float:y,&float:z,float:sx,float:sy,
                     obj:ref=obj:0)
{
	if(!ref) ref = Parent();
	if(!ref) ref = Self(); //Parentが取れない Self==Scene
	GetOffPos( Disp2D(), x, y, z, sx, sy, 0.0, ref );
}


stock builtin_ch_init( bool: keep_histroy = false )
{
    // 組み込みチャンネルは、イリーガルディスクを検出したら、エラー画面を出す。
    SetSystemParam( SYSTEM_PARAM_ALERT_ILLEGAL_DISC, true );

    // 組み込みチャンネルは、ヒストリを毎回クリアする。
    if( ! keep_histroy ) hisClear();
}


//////////////////////////////////////////////////
// Functions for standard PSBB menu layout rules 
////////////////////////////////////////////////
const float: BN_MENU_TITLE_PITCH = 0.116; 
const float: BN_MENU_ITEM_PITCH = 0.07143; 
const float: BN_MENU_LEFT_CENTER_X = 0.275; 
const float: BN_MENU_RIGHT_CENTER_X = 0.074; 
const float: BN_MENU_LEFT_SCRBAR_X = 0.047; 
const float: BN_MENU_RIGHT_SCRBAR_X = 0.953; 
enum{
	BN_MENU_STYLE_LEFT,
	BN_MENU_STYLE_RIGHT,
}

// 全体高さと幅を返す
stock bn_get_menu_totalheight( item_num, bool:title, &float:height )
{
	// 5アイテム以下は 5のレイアウトになる
	if( item_num <= 5 ){
		height = BN_MENU_ITEM_PITCH * 4 ;
		if(title) height += BN_MENU_TITLE_PITCH;
	}else if( item_num >= 6 ) { // 最大 6まで
		height = BN_MENU_ITEM_PITCH * 5 ;
		if(title) height += BN_MENU_TITLE_PITCH;
	}
}
stock bn_get_menu_totalcenter( style, item_num, bool:title, &float:x,&float:y )
{
	new warning = item_num;
	new bool:warning2 = title;
	item_num = warning; title = warning2;//for warning

	if( style == BN_MENU_STYLE_LEFT )
		x = BN_MENU_LEFT_CENTER_X ;
	else if( style == BN_MENU_STYLE_RIGHT )
		x = BN_MENU_RIGHT_CENTER_X ;
	y = 0.5;
}
stock bn_get_menu_listheight( item_num, bool:title, &float:height )
{
	new bool:warning2 = title;
	title = warning2;//for warning

	if( item_num <= 5 ){
		height = BN_MENU_ITEM_PITCH * 4;
	}else if( item_num >= 6 ) {
		height = BN_MENU_ITEM_PITCH * 5;
	}
}
stock bn_get_menu_titlecenter( style, item_num, bool:title, &float:x,&float:y )
{
	new warning = item_num;
	item_num = warning; //for warning

	if(!title) return (-1);
	if( style == BN_MENU_STYLE_LEFT )
		x = BN_MENU_LEFT_CENTER_X ;
	else if( style == BN_MENU_STYLE_RIGHT )
		x = BN_MENU_RIGHT_CENTER_X ;
	new float:rate_h;
	bn_get_menu_totalheight( item_num, title, rate_h );
	y = 0.5-0.5*rate_h;

	return (0);
}
stock bn_get_menu_listcenter( style, item_num, bool:title, &float:x,&float:y )
{
	new warning = item_num;
	item_num = warning; //for warning

	if( style == BN_MENU_STYLE_LEFT )
		x = BN_MENU_LEFT_CENTER_X ;
	else if( style == BN_MENU_STYLE_RIGHT )
		x = BN_MENU_RIGHT_CENTER_X ;
	if(!title) y = 0.5 ;
	else y = 0.5 + 0.5*BN_MENU_TITLE_PITCH ; //タイトルの高さ分下に
}
stock bn_get_menu_listtop( item_num, bool:title, &float:y )
{
	new float:h;
	bn_get_menu_totalheight( item_num, title, h );
	// 中心 - 高さの半分 + タイトル
	if(title) y = 0.5 - 0.5*h + BN_MENU_TITLE_PITCH;
	else y = 0.5 - 0.5*h;
}

