Example #1
0
void Scene_Title::Draw() const{
	TCHAR menuString[MAX_TITLE_MENU][64] = {
		_T("はじめから"),
		_T("つづきから"),
		_T("記憶の中の人形"),
		_T("トロフィー"),
		_T("戦闘チュートリアルへ"),
		_T("オプション"),
		_T("ゲームを終了")};

	TCHAR chapterString[MAX_CHAPTER][64] = {
		_T("妖精の夢(仮)"),
		_T("幽霊の夢(仮)"),
		_T("死者の夢(仮)"),
		_T("少女の夢(仮)"),
		_T("アリスの夢(仮)"),
		_T("テストプレイ用")
	};
	
	// 各メニューを描画する
	for(int n=0; n<MAX_TITLE_MENU; n++){
		DrawStringToHandle(200, 300+34*n, menuString[n],
			(n == s_main.index ? GetColor(255, 255, 255) : GetColor(96, 96, 96)),
			g_font.hInfo, 0, 0);
	}

	// シーン切り替えのフェードの描画
	DrawReserveFade();
}
void Scene_DollUnite::Draw() const{
	// 背景の描画
	SetDrawBright(128, 128, 128);
	DrawGraph(0, 0, g_image.bg.camp, 0);
	SetDrawBright(255,255,255);

	// 人形の一覧ウィンドウの描画
	w_dollList.Draw();

	// 合成ボーナスの描画
	switch(state){
	case SCNSTATE_DOLLUNITE_CHOOSE_FIRST:
	case SCNSTATE_DOLLUNITE_CHOOSE_SECOND:
		// 人形の情報の描画
		DrawParentDollInfo();
		DrawUniteBonus();
		// プレビューのフェードアウト
		DrawPreviewDoll(previewAlpha);
		DrawPreviewStatus(previewAlpha);
		DrawPreviewSkillList(previewAlpha);
		DrawPreviewMenu(previewAlpha);
		break;
	case SCNSTATE_DOLLUNITE_PREVIEW:
		DrawPreviewDoll(previewAlpha);
		DrawPreviewStatus(previewAlpha);
		DrawPreviewSkillList(previewAlpha);
		DrawPreviewMenu(previewAlpha);
		break;
	case SCNSTATE_DOLLUNITE_SKILLPREVIEW:
		DrawPreviewDoll(previewAlpha);
		DrawPreviewStatus(previewAlpha);
		DrawPreviewSkillList(previewAlpha);
		DrawPreviewMenu(previewAlpha);
		break;
	};

	// 情報ウィンドウの描画
	wf_chooseFirst.Draw();
	wf_chooseSecond.Draw();
	wf_preview.Draw();
	wf_confirm.Draw();

	// スキルのプレビューの描画
	w_skillPreview.Draw();
	w_skillSelect.Draw();

	// フェードの描画
	DrawReserveFade();
}
Example #3
0
void Scene_DollBirth::Draw() const{
	float exRate = 0.7;
	switch(state){
	case SCNSTATE_DOLLBIRTH_DOLLAPPEAR:
		exRate *= 1.0*(float)GetAnimeCount()/GetAnimeTime();
		break;
	}
	// 人形の描画
	DrawDollIllust(240, 300,
	g_temp.dollData.GetType(), g_temp.dollData.GetAttr(),
	exRate, 0);

	// ウィンドウの描画
	w_status.Draw();

	// 名前入力ウィンドウの描画
	w_name.Draw();

	DrawReserveFade();
}
void Scene_TestDangeon::Draw() const{
	TCHAR buf[64];

	// 背景の描画
	int tmpX = backX-BACKTILE_SIZE;
	int tmpY = backY-BACKTILE_SIZE;
	while(tmpY < WND_HEIGHT){
		while(tmpX < WND_WIDTH){
			DrawGraph(tmpX, tmpY, g_image.icon.tile, 0);
			tmpX += BACKTILE_SIZE;
		}
		tmpY += BACKTILE_SIZE;
		tmpX = backX - BACKTILE_SIZE;
	}


	TCHAR	menuTitle[MAX_TESTDANGEON_MENU][128] = {
		_T("出発する"), 
		_T("パーティの編成"), 
		_T("ステータス・装備"),
		_T("アイテム"),
		_T("人形の合成"),
		_T("休憩する"),
		_T("セーブ"),
		_T("リセット"),
		_T("BGM音量"),
		_T("SE音量"),
		_T("オートセーブ"),
		_T("ゲームを終了する"),
#ifdef MYGAME_USE_DEBUGTOOLS
		_T("デバッグメニュー"),
#endif // MYGAME_USE_DEBUGTOOLS
	};

	TCHAR debugMenuTitle[MAX_TESTDANGEON_DEBUGMENU][128] = {
		_T("全回復"),
		_T("チュートリアルクリア状態にする"),
		_T("ステージ1クリア状態にする"),
		_T("ステージ2クリア状態にする"),
		_T("ステージ3クリア状態にする"),
		_T("ステージ4クリア状態にする"),
		_T("ステージ5クリア状態にする"),
		_T("ステージ6クリア状態にする"),
		_T("人形の作成"),
		_T("戻る"),
	};

	TCHAR	menuAcc[MAX_TESTDANGEON_MENU][128] = {
		_T("ステージを選択して出発します。"), 
		_T("パーティ編成をします。"), 
		_T("メンバーのステータス確認・装備変更をします。"),
		_T("アイテムを確認・使用します。"),
		_T("2体の人形を合成して新しい人形を作成します。"),
		_T("少しの時間休んで、TPとMPを少し回復します。"),
		_T("セーブします。(ロードは自動で行われます)"),
		_T("ゲームデータをリセットします。"),
		_T("BGMの音量を変更します。(左右キー)"),
		_T("SEの音量を変更します。(左右キー)"),
		_T("オートセーブの設定をします。(左右キー)"),
		_T("ゲームを終了します。"),
#ifdef MYGAME_USE_DEBUGTOOLS
		_T("デバッグメニューを開きます"),
#endif // MYGAME_USE_DEBUGTOOLS
	};

	TCHAR	debugMenuAcc[MAX_TESTDANGEON_DEBUGMENU][128] = {
		_T("TPとMPを全回復します。"),
		_T("チュートリアルをクリアしたような感じにします。"),
		_T("ステージ1をクリアしたような感じにします。"),
		_T("ステージ2をクリアしたような感じにします。"),
		_T("ステージ3をクリアしたような感じにします。"),
		_T("ステージ4をクリアしたような感じにします。"),
		_T("ステージ5をクリアしたような感じにします。"),
		_T("ステージ6をクリアしたような感じにします。"),
		_T("新しい人形を生み出します。"),
		_T("メインメニューに戻ります。"),
	};


	TCHAR	menuAcc_noDoll[128] 
		= _T("戦闘メンバーを設定して下さい。");


	TCHAR	stageTitle[MAX_TESTDANGEON_STAGE+1][128] = {
		_T("チュートリアル1 ダンジョンに行こう"), 
		_T("チュートリアル2 仲間を増やそう"), 
		_T("チュートリアル3 力を合わせよう"), 
		_T("Stage1 はじまりの森"), 
		_T("Stage2 木々を抜けて"), 
		_T("Stage3 立ちふさがる者"), 
		_T("Stage4 古き森の守護者"), 
		_T("Stage5 迷いの森の中で"), 
		_T("Stage6 妖精小戦争"), 
		_T("やめる"), 
	};

	// 背景の枠の描画
	DrawBox(90, 45, 580, 515, GetColor(127, 191, 159), 1);
	DrawBox(50, 30, 540, 500, GetColor(223, 239, 232), 1);

	// 人形の描画
	WORD dollType=0, dollFace=0, dollAttr=0;
	int hDollImage = -1;
	int tmp = backDoll;
	if(state != SCNSTATE_TESTDANGEON_CHOOSEMAP){
		if(tmp != -1){
			dollType = tmp/(DOLL_FACE_NUM*DOLL_ATTR_NUM);
			tmp -= dollType*DOLL_FACE_NUM*DOLL_ATTR_NUM;
			dollFace = tmp/DOLL_ATTR_NUM;
			tmp -= dollFace*DOLL_ATTR_NUM;
			dollAttr = tmp;
			hDollImage = g_image.GetDollIconHandle(
				dollType*DOLL_TYPE_PER_GROUP, dollFace, dollAttr);
		}
		if(hDollImage != -1){
			DrawRotaGraphF(
				630, 400+20*sin(2.0*M_PI*(sceneTime-90)/720),
				1.0, 0,
				hDollImage, 1);
		}
	}else{
		DrawComment();
	}

	// 文字の描画
	int color;
	switch(state){
	case SCNSTATE_TESTDANGEON_MAINMENU:
	case SCNSTATE_TESTDANGEON_BDOLLMANAGE:
	case SCNSTATE_TESTDANGEON_ITEMMANAGE:
	case SCNSTATE_TESTDANGEON_RESET_YESNO:
	case SCNSTATE_TESTDANGEON_CHECK_MAPRESULT:
		for(int n=0; n<MAX_TESTDANGEON_MENU; n++){
			if(s_main.index == n){
				color = TESTDANGEON_SELECTEDCOLOR;
			}else if(s_main.isActive[n]){
				color = TESTDANGEON_UNSELECTEDCOLOR;
			}else{
				color = TESTDANGEON_DISABLEDCOLOR;
			}
			DrawStringToHandle(80+3, 50+30*n+3, 
				menuTitle[n], color, g_font.hInfo);
		}
		// BGMのボリューム表示
		TCHAR buf[16];
		wsprintf(buf, _T("%3d"), (int)g_cfg.BGM);
		DrawStringToHandle(
			200+120+3, 50+30*TESTDANGEON_MENU_BGM+3,
			buf, TESTDANGEON_SELECTEDCOLOR,
			g_font.hInfo);

		// SEのボリューム表示
		wsprintf(buf, _T("%3d"), (int)g_cfg.SE);
		DrawStringToHandle(
			200+120+3, 50+30*TESTDANGEON_MENU_SE+3,
			buf, TESTDANGEON_SELECTEDCOLOR,
			g_font.hInfo);

		// SEのオートセーブのON/OFF表示

		DrawStringToHandle(
			200+120+3, 50+30*TESTDANGEON_MENU_AUTOSAVE+3,
			r_aliceInfo.GetAutoSave() ? _T("ON") : _T("OFF"),
			TESTDANGEON_SELECTEDCOLOR,
			g_font.hInfo);
		/*
		// 回復しました。の文字
		if(healedCount > 0 && healedCount < TESTDANGEON_HEALED_TIME){
			SetDrawBlendMode(DX_BLENDMODE_ALPHA,
				min(255, min(32*healedCount, 12*(TESTDANGEON_SAVED_TIME-healedCount))));
			DrawStringToHandle(
				200+100+3, 50+30*TESTDANGEON_MENU_HEALALL+3,
				_T("回復しました。"), TESTDANGEON_SELECTEDCOLOR, 
				g_font.hInfo);
		}*/
		// セーブしました。の文字
		if(savedCount > 0 && savedCount < TESTDANGEON_SAVED_TIME){
			SetDrawBlendMode(DX_BLENDMODE_ALPHA,
				min(255, min(32*savedCount, 12*(TESTDANGEON_SAVED_TIME-savedCount))));
			DrawStringToHandle(
				200+100+3, 50+30*TESTDANGEON_MENU_SAVE+3,
				_T("セーブしました。"), TESTDANGEON_SELECTEDCOLOR, 
				g_font.hInfo);
		}
		SetDrawBlendMode(DX_BLENDMODE_ALPHA, 255);

		break;
	case SCNSTATE_TESTDANGEON_CHOOSEMAP:
		for(int n=0; n<MAX_TESTDANGEON_STAGE+1; n++){
			if(s_sub.index == n){
				color = TESTDANGEON_SELECTEDCOLOR;
			}else{
				color = TESTDANGEON_UNSELECTEDCOLOR;
			}
			if(n >= MAX_TESTDANGEON_STAGE){
				DrawStringToHandle(80+3, 50+30*n+3, 
					stageTitle[n], color, g_font.hInfo);
			}else if(s_sub.isActive[n]){
				DrawStringToHandle(80+3, 50+30*n+3, 
					stageTitle[n], color, g_font.hInfo);
			}
		}	
		break;
	case SCNSTATE_TESTDANGEON_CHOOSEDEBUG:
		for(int n=0; n<MAX_TESTDANGEON_DEBUGMENU; n++){
			if(s_debug.index == n){
				color = TESTDANGEON_SELECTEDCOLOR;
			}else{
				color = TESTDANGEON_UNSELECTEDCOLOR;
			}
			if(n >= MAX_TESTDANGEON_STAGE){
				DrawStringToHandle(80+3, 50+30*n+3, 
					debugMenuTitle[n], color, g_font.hInfo);
			}else if(s_debug.isActive[n]){
				DrawStringToHandle(80+3, 50+30*n+3, 
					debugMenuTitle[n], color, g_font.hInfo);
			}
		}	
		break;
	}

	// 説明の描画
	int width = 0;
	switch(state){
	case SCNSTATE_TESTDANGEON_MAINMENU:
		if(!s_main.isActive[TESTDANGEON_MENU_DANGEON] && s_main.index == 1){
			// 例外的なメッセージ表示
			width = GetDrawStringWidthToHandle(menuAcc_noDoll,
				strlen(menuAcc_noDoll), g_font.hInfo);
			DrawStringToHandle((WND_WIDTH-width)/2, WND_HEIGHT-FONTSIZE_INFO-10, 
				menuAcc_noDoll, GetColor(0, 0, 0), g_font.hInfo);
		}else{
			width = GetDrawStringWidthToHandle(menuAcc[s_main.index],
				strlen(menuAcc[s_main.index]), g_font.hInfo);
			DrawStringToHandle((WND_WIDTH-width)/2, WND_HEIGHT-FONTSIZE_INFO-10, 
				menuAcc[s_main.index], GetColor(0, 0, 0), g_font.hInfo);
		}
		break;
	case SCNSTATE_TESTDANGEON_CHOOSEDEBUG:
		width = GetDrawStringWidthToHandle(debugMenuAcc[s_debug.index],
			strlen(debugMenuAcc[s_debug.index]), g_font.hInfo);
		DrawStringToHandle((WND_WIDTH-width)/2, WND_HEIGHT-FONTSIZE_INFO-10, 
			debugMenuAcc[s_debug.index], GetColor(0, 0, 0), g_font.hInfo);
		break;
	}


	// アリスの挑戦回数
	/*
	wsprintf(buf, _T("挑戦回数:%d回"), (int)r_aliceInfo.GetTryNum());
	DrawStringToHandle(
		10, 10, buf,
		GetColor(32, 32, 32), 
		g_font.hInfo);

		*/

	/*
	// 説明ウィンドウ表示する/しないの表示
	DrawStringToHandle(360-((s_main.index==11)?4:0)+3, 50+30*11+3,
		g_trialAliceFile.data.tutorialHint ? 
		_T("毎回表示") : _T("初回のみ"),
		TESTDANGEON_SHADOWCOLOR,
		(s_main.index == 11) ? TESTDANGEON_SHADOWCOLOR2 : TESTDANGEON_SHADOWCOLOR,
		g_font.hInfo);
	DrawStringToHandle(360-((s_main.index==11)?4:0), 50+30*11,
		g_trialAliceFile.data.tutorialHint ? 
		_T("毎回表示") : _T("初回のみ"),
		(s_main.index == 11) ? TESTDANGEON_SELECTEDCOLOR : TESTDANGEON_UNSELECTEDCOLOR,
		g_font.hInfo);
		*/

	// ウィンドウの描画
	if(!w_hint.GetClosed()){
		SetDrawBlendMode(DX_BLENDMODE_ALPHA, 128);
		DrawBox(0, 0, WND_WIDTH, WND_HEIGHT, GetColor(0, 0, 0), 1);
		SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 255);
	}
	/*
	if(w_hint.GetState() == Window_Base::CLOSING){
		g_trialAliceFile.data.firstHint = true;
	}
	*/

	w_bDollManage.Draw();

	// アイテムウィンドウと小ウィンドウ
	w_itemManage.Draw();
	(w_itemManage.GetNoticeWindowPtr())->Draw();
	(w_itemManage.GetDollNoticeWindowPtr())->Draw();
	w_hint.Draw();
	w_yesno.Draw();

	DrawTimeAndMP(r_aliceInfo.GetTime(), r_aliceInfo.GetMP(), 0, 0);

	// DrawGraph(0, 0, g_image.icon.skillKey[0], 1);

	// シーン切り替えのフェードの描画
	DrawReserveFade();
}