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(); }
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(); }