X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
| Revision | 164 (tree) |
|---|---|
| Time | 2017-01-28 01:48:57 |
| Author | |
VC++にてDebugモードでコンパイルした際のダイアログ表示を変更、コマンド(window)でのリセット処理を改善、オープニングの文字表示を微調整。
| @@ -144,8 +144,8 @@ | ||
| 144 | 144 | return 1; |
| 145 | 145 | } |
| 146 | 146 | //if( rtn == 2 ){ |
| 147 | - WindowCtrl->ErrorInfo("Resetに失敗しました"); | |
| 148 | - WindowCtrl->CloseWindow(); | |
| 147 | + //WindowCtrl->ErrorInfo("Resetに失敗しました"); | |
| 148 | + //WindowCtrl->CloseWindow(); | |
| 149 | 149 | return -1; |
| 150 | 150 | //} |
| 151 | 151 | } |
| @@ -411,13 +411,13 @@ | ||
| 411 | 411 | float effectA = 1.0f; |
| 412 | 412 | if( framecnt < (int)(8.0f*GAMEFPS) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 7.0f, false); } |
| 413 | 413 | if( framecnt > (int)(10.0f*GAMEFPS) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 10.0f, true); } |
| 414 | - d3dg->Draw2DTextureFontText(330, 300, "REMAKE", d3dg->GetColorCode(1.0f,1.0f,1.0f,effectA), 20, 20); | |
| 414 | + d3dg->Draw2DTextureFontText(SCREEN_WIDTH - 310, 300, "REMAKE", d3dg->GetColorCode(1.0f,1.0f,1.0f,effectA), 20, 20); | |
| 415 | 415 | } |
| 416 | 416 | if( ((int)(7.5f*GAMEFPS) < framecnt)&&(framecnt < (int)(11.5f*GAMEFPS)) ){ |
| 417 | 417 | float effectA = 1.0f; |
| 418 | 418 | if( framecnt < (int)(8.5f*GAMEFPS) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 7.5f, false); } |
| 419 | 419 | if( framecnt > (int)(10.5f*GAMEFPS) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 10.5f, true); } |
| 420 | - d3dg->Draw2DTextureFontText(370, 330, "[-_-;](mikan)", d3dg->GetColorCode(1.0f,1.0f,1.0f,effectA), 20, 20); | |
| 420 | + d3dg->Draw2DTextureFontText(SCREEN_WIDTH - 270, 330, "[-_-;](mikan)", d3dg->GetColorCode(1.0f,1.0f,1.0f,effectA), 20, 20); | |
| 421 | 421 | //d3dg->Draw2DTexture(410, 360, opening_banner, 200, 40, effectA); |
| 422 | 422 | } |
| 423 | 423 |
| @@ -3360,6 +3360,8 @@ | ||
| 3360 | 3360 | |
| 3361 | 3361 | //ウィンドウ・フルスクリーン切り替え |
| 3362 | 3362 | if( strcmp(NewCommand, "window") == 0 ){ |
| 3363 | + bool ErrorFlag = false; | |
| 3364 | + | |
| 3363 | 3365 | //現在の表示モード取得 |
| 3364 | 3366 | bool flag = d3dg->GetFullScreenFlag(); |
| 3365 | 3367 |
| @@ -3366,20 +3368,35 @@ | ||
| 3366 | 3368 | if( flag == false ){ flag = true; } |
| 3367 | 3369 | else{ flag = false; } |
| 3368 | 3370 | |
| 3369 | - //切り替え処理 | |
| 3371 | + //切り替え処理(初回) | |
| 3370 | 3372 | WindowCtrl->ChangeWindowMode(flag); |
| 3371 | 3373 | d3dg->SetFullScreenFlag(flag); |
| 3372 | 3374 | if( ResetGame(WindowCtrl) != 0 ){ |
| 3373 | 3375 | AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "[Error] Change failed."); |
| 3376 | + | |
| 3377 | + if( flag == false ){ | |
| 3378 | + //フルスクリーン⇒ウィンドウが失敗したら、エラーとして終了。 | |
| 3379 | + WindowCtrl->ErrorInfo("Resetに失敗しました"); | |
| 3380 | + WindowCtrl->CloseWindow(); | |
| 3381 | + ErrorFlag = true; | |
| 3382 | + } | |
| 3383 | + else{ | |
| 3384 | + //ウィンドウ⇒フルスクリーンが失敗したら、ウィンドウモードへ戻してゲーム続行を試みる。 | |
| 3385 | + // (GPUが指定解像度のフルスクリーンに対応してないとか・・?) | |
| 3386 | + flag = false; | |
| 3387 | + | |
| 3388 | + WindowCtrl->ChangeWindowMode(flag); | |
| 3389 | + d3dg->SetFullScreenFlag(flag); | |
| 3390 | + if( ResetGame(WindowCtrl) != 0 ){ | |
| 3391 | + //戻しても失敗するなら、エラーとして終了。 | |
| 3392 | + WindowCtrl->ErrorInfo("Resetに失敗しました"); | |
| 3393 | + WindowCtrl->CloseWindow(); | |
| 3394 | + ErrorFlag = true; | |
| 3395 | + } | |
| 3396 | + } | |
| 3374 | 3397 | } |
| 3375 | 3398 | else{ |
| 3376 | - Recovery(); | |
| 3377 | - | |
| 3378 | - //キー入力を取得 | |
| 3379 | - // ※ディスプレイ解像度の変化によるマウスの移動分を捨てる | |
| 3380 | - inputCtrl->GetInputState(true); | |
| 3381 | - inputCtrl->MoveMouseCenter(); | |
| 3382 | - | |
| 3399 | + //初回で切り替えに成功したら、成功メッセージを表示。 | |
| 3383 | 3400 | if( flag == true ){ |
| 3384 | 3401 | AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "Changed FullScreen mode."); |
| 3385 | 3402 | } |
| @@ -3387,6 +3404,16 @@ | ||
| 3387 | 3404 | AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "Changed Window mode."); |
| 3388 | 3405 | } |
| 3389 | 3406 | } |
| 3407 | + | |
| 3408 | + //切り替えに成功したら、回復などの後処理。 | |
| 3409 | + if( ErrorFlag == false ){ | |
| 3410 | + Recovery(); | |
| 3411 | + | |
| 3412 | + //キー入力を取得 | |
| 3413 | + // ※ディスプレイ解像度の変化によるマウスの移動分を捨てる | |
| 3414 | + inputCtrl->GetInputState(true); | |
| 3415 | + inputCtrl->MoveMouseCenter(); | |
| 3416 | + } | |
| 3390 | 3417 | } |
| 3391 | 3418 | |
| 3392 | 3419 | //スクリーンショットを撮影 |
| @@ -3578,7 +3605,11 @@ | ||
| 3578 | 3605 | Opening->Sound(); |
| 3579 | 3606 | if( (GameConfig.GetFrameskipFlag() == false)||(framecnt%2 == 0) ){ |
| 3580 | 3607 | if( Opening->RenderMain() == true ){ |
| 3581 | - if( ResetGame(WindowCtrl) == 0 ){ | |
| 3608 | + if( ResetGame(WindowCtrl) != 0 ){ | |
| 3609 | + WindowCtrl->ErrorInfo("Resetに失敗しました"); | |
| 3610 | + WindowCtrl->CloseWindow(); | |
| 3611 | + } | |
| 3612 | + else{ | |
| 3582 | 3613 | Opening->Recovery(); |
| 3583 | 3614 | |
| 3584 | 3615 | //現在の画面を再スタートさせる |
| @@ -3614,7 +3645,11 @@ | ||
| 3614 | 3645 | MainMenu->Sound(); |
| 3615 | 3646 | if( (GameConfig.GetFrameskipFlag() == false)||(framecnt%2 == 0) ){ |
| 3616 | 3647 | if( MainMenu->RenderMain() == true ){ |
| 3617 | - if( ResetGame(WindowCtrl) == 0 ){ | |
| 3648 | + if( ResetGame(WindowCtrl) != 0 ){ | |
| 3649 | + WindowCtrl->ErrorInfo("Resetに失敗しました"); | |
| 3650 | + WindowCtrl->CloseWindow(); | |
| 3651 | + } | |
| 3652 | + else{ | |
| 3618 | 3653 | MainMenu->Recovery(); |
| 3619 | 3654 | |
| 3620 | 3655 | //現在の画面を再スタートさせる |
| @@ -3644,7 +3679,11 @@ | ||
| 3644 | 3679 | Briefing->Process(); |
| 3645 | 3680 | if( (GameConfig.GetFrameskipFlag() == false)||(framecnt%2 == 0) ){ |
| 3646 | 3681 | if( Briefing->RenderMain() == true ){ |
| 3647 | - if( ResetGame(WindowCtrl) == 0 ){ | |
| 3682 | + if( ResetGame(WindowCtrl) != 0 ){ | |
| 3683 | + WindowCtrl->ErrorInfo("Resetに失敗しました"); | |
| 3684 | + WindowCtrl->CloseWindow(); | |
| 3685 | + } | |
| 3686 | + else{ | |
| 3648 | 3687 | Briefing->Recovery(); |
| 3649 | 3688 | |
| 3650 | 3689 | //現在の画面を再スタートさせる |
| @@ -3682,7 +3721,11 @@ | ||
| 3682 | 3721 | } |
| 3683 | 3722 | if( (GameConfig.GetFrameskipFlag() == false)||(framecnt%2 == 0) ){ |
| 3684 | 3723 | if( MainGame->RenderMain() == true ){ |
| 3685 | - if( ResetGame(WindowCtrl) == 0 ){ | |
| 3724 | + if( ResetGame(WindowCtrl) != 0 ){ | |
| 3725 | + WindowCtrl->ErrorInfo("Resetに失敗しました"); | |
| 3726 | + WindowCtrl->CloseWindow(); | |
| 3727 | + } | |
| 3728 | + else{ | |
| 3686 | 3729 | MainGame->Recovery(); |
| 3687 | 3730 | |
| 3688 | 3731 | //現在の画面を再スタートさせる |
| @@ -3708,7 +3751,11 @@ | ||
| 3708 | 3751 | Result->Process(); |
| 3709 | 3752 | if( (GameConfig.GetFrameskipFlag() == false)||(framecnt%2 == 0) ){ |
| 3710 | 3753 | if( Result->RenderMain() == true ){ |
| 3711 | - if( ResetGame(WindowCtrl) == 0 ){ | |
| 3754 | + if( ResetGame(WindowCtrl) != 0 ){ | |
| 3755 | + WindowCtrl->ErrorInfo("Resetに失敗しました"); | |
| 3756 | + WindowCtrl->CloseWindow(); | |
| 3757 | + } | |
| 3758 | + else{ | |
| 3712 | 3759 | Result->Recovery(); |
| 3713 | 3760 | |
| 3714 | 3761 | //現在の画面を再スタートさせる |
| @@ -100,9 +100,12 @@ | ||
| 100 | 100 | } |
| 101 | 101 | |
| 102 | 102 | #ifdef _DEBUG |
| 103 | - char str[24]; | |
| 104 | - GameConfig.GetPlayerName(str); | |
| 105 | - MessageBox(NULL, str, "プレイヤー名", MB_OK); | |
| 103 | + //char str[24]; | |
| 104 | + //GameConfig.GetPlayerName(str); | |
| 105 | + //MessageBox(NULL, str, "プレイヤー名", MB_OK); | |
| 106 | + char str[255]; | |
| 107 | + strcpy(str, "The compiler is the Debug mode.\nIf release the software, Switch compiler to Release mode."); | |
| 108 | + MessageBox(NULL, str, "Information", MB_OK); | |
| 106 | 109 | #endif |
| 107 | 110 | |
| 108 | 111 | //ウィンドウ初期化 |