/*
 * $Id: m_msg_main_appear.c,v 1.1 2003/06/06 00:15:12 tong Exp $
 *
 *	メッセージウインドウの"出現"メインの処理(インクルードソースファイル)
 *
 * $Log: m_msg_main_appear.c,v $
 * Revision 1.1  2003/06/06 00:15:12  tong
 * source files for localization from Nintendo.
 *
 * Revision 1.24  2000-10-12 21:19:10+09  sakakibara
 * スペックチェンジ修正
 *
 * Revision 1.23  2000-09-28 19:45:43+09  sakakibara
 * Spec Change
 *
 * Revision 1.22  2000-08-12 11:56:25+09  sakakibara
 * 無生物はクリック音
 *
 */
/*
 ******************************************************************************
 *	出現用拡大計算(TRUEなら拡大終了)
 ******************************************************************************
 */
static int mMsg_Main_Appear_SetScale(M_MSG_WIN *win_p, GAME *game_p)
{
    (void)game_p;
    if(win_p->timer < M_MSG_TIME_APPEAR) {
	float d;
	win_p->timer += 1.0F;
	d = get_percent_forAccelBrake(win_p->timer,
				      0.0F,
				      M_MSG_TIME_APPEAR,
				      0.0F,
				      0.0F);
	/* ウインドウのスケール */
	win_p->now_window_scale = d;
	/* 文字のスケール */
	win_p->now_font_scale = d;
	return(FALSE);
    }
    else {
	win_p->now_window_scale = 1.0F;		/* ウインドウのスケール */
	win_p->now_font_scale = 1.0F;		/* 文字のスケール */
	win_p->timer = 0.0F;			/* タイマー */
	return(TRUE);
    }
}

/*
 ******************************************************************************
 *	"出現"から切り替えを要請
 ******************************************************************************
 */
static void mMsg_request_main_index_fromAppear(M_MSG_WIN *win_p,
					       GAME *game_p,
					       int end_scaling)
{
    (void)game_p;
    /* 拡大終了なら */
    if(end_scaling) {
	/* メッセージのメイン処理変更を要求 */
	if(mMsg_request_main_cursol(win_p,
				    M_MSG_INIT_ELEMENT_NONE_INSETUP,
				    M_MSG_REQUEST_PRIORITY_NORMAL)) {
	    mMsg_SetTimer(win_p, M_MSG_TIME_NEXT_PAGE);	    
	}
    }
}

/*
 ******************************************************************************
 *	メッセージウインドウの"出現"メインの処理
 ******************************************************************************
 */
static void mMsg_Main_Appear(M_MSG_WIN *win_p, GAME *game_p)
{
    int end_scaling;

    /* 出現用拡大計算(TRUEなら拡大終了) */
    end_scaling = mMsg_Main_Appear_SetScale(win_p, game_p);
    /* "出現"から切り替えを要請 */
    mMsg_request_main_index_fromAppear(win_p, game_p, end_scaling);
    /* セットアップ */
    mMsg_MainSetup_Window(win_p, game_p);
}

/*
 ******************************************************************************
 *	"出現"メインへのセットアップ
 ******************************************************************************
 */
static void mMsg_MainSetup_Appear(M_MSG_WIN *win_p, GAME *game_p)
{
    M_MSG_REQUEST_MAIN_APPEAR_DATA	*request_main_data_appear_p = &(win_p->request_main_data.appear);
    
    int msg_num = request_main_data_appear_p->msg_num;

    /* 継続メッセージのリセット */
//    mMsg_Set_continue_msg_num(win_p, LIMIT_UNSHORT_ABS);
    
    /* メッセージデータをロード */
    if(mMsg_LoadMsgData(win_p->msg_p, msg_num, FALSE)) {
	ACTOR *client_actor_p = request_main_data_appear_p->client_actor_p;
	int display_name = request_main_data_appear_p->display_name;
	
	/* メッセージのクライアント(話し手)を登録 */
	mMsg_Set_client_actor_p(win_p, client_actor_p, display_name);
	win_p->window_color = request_main_data_appear_p->window_color;

	/* サウンドセットアップ */
	mMsg_sound_spec_change_voice(win_p);
	mMsg_sound_voice_mode(win_p);	/* */
	
	/* メイン処理のインデックスを変更 */
	win_p->main_index = M_MSG_MAIN_APPEAR;
	/* 描画処理を通す */
	win_p->flag_draw = TRUE;
	/* 表示倍率のリセット */
	win_p->now_window_scale = 0.0F;		/* ウインドウのスケール */
	win_p->now_font_scale = 0.0F;		/* 文字のスケール */
	win_p->timer = 0.0F;			/* タイマー */

	/* メッセージウインドウのボタン待ち点滅時間 */
	win_p->display_button_turn = FALSE;

//	/* ウインドウの出現音を出す */
//	if(mDemo_Get_use_zoom_sound() != FALSE) {
//	    mMsg_sound_ZOOMUP();
//	}
	/* リクエストされたメイン処理のインデックス */
	win_p->request_main_index = -1;
	/* リクエスト優先順位 */
	win_p->request_priority = M_MSG_REQUEST_PRIORITY_NORMAL_LOWER1;

	win_p->now_start_font_code_cursol_index	= 0;
	win_p->now_end_font_code_cursol_index	= 0;

	if((win_p->client_actor_p) != NULL) {
	    switch(mNpc_GetNpcSex(win_p->client_actor_p)) {
	    	case SEX_MAN:
		    win_p->name_window_color.r = 70;
		    win_p->name_window_color.g = 245;
		    win_p->name_window_color.b = 255;
		    win_p->name_color.r = 0;
		    win_p->name_color.g = 0;
		    win_p->name_color.b = 15;
		    break;
	    	case SEX_WOMAN:
		    win_p->name_window_color.r = 235;
		    win_p->name_window_color.g = 140;
		    win_p->name_window_color.b = 210;
		    win_p->name_color.r = 45;
		    win_p->name_color.g = 0;
		    win_p->name_color.b = 30;
		    break;
	    	default:    
		    win_p->name_window_color.r = 185;
		    win_p->name_window_color.g = 255;
		    win_p->name_window_color.b = 0;
		    win_p->name_color.r = 0;
		    win_p->name_color.g = 30;
		    win_p->name_color.b = 0;
	    }
	}
	/* 現在のデータは使用可能か */
	win_p->able = TRUE;
    }
    else {
	/* 現在のデータは使用可能か */
	win_p->able = FALSE;
    }
    (void)game_p;
}
