X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
| Revision | 345 (tree) |
|---|---|
| Time | 2023-01-15 17:50:03 |
| Author | |
追加設定ファイル(.ini)でマウス移動量制限の有無を設定できるように
| @@ -52,6 +52,7 @@ | ||
| 52 | 52 | ShowArmFlag = false; |
| 53 | 53 | ScreenWidth = 0; |
| 54 | 54 | ScreenHeight = 0; |
| 55 | + MouseLimitFlag = true; | |
| 55 | 56 | mastervolume = 0.0f; |
| 56 | 57 | } |
| 57 | 58 |
| @@ -568,6 +569,14 @@ | ||
| 568 | 569 | fprintf(fp, "\n"); |
| 569 | 570 | fprintf(fp, "\n"); |
| 570 | 571 | |
| 572 | + fprintf(fp, "[Input]\n"); | |
| 573 | + fprintf(fp, ";Limit mouse input control.\n"); | |
| 574 | + fprintf(fp, "; 0: OFF\n"); | |
| 575 | + fprintf(fp, "; 1: ON (default)\n"); | |
| 576 | + fprintf(fp, "MouseLimit = 1\n"); | |
| 577 | + fprintf(fp, "\n"); | |
| 578 | + fprintf(fp, "\n"); | |
| 579 | + | |
| 571 | 580 | fprintf(fp, "[Sounds]\n"); |
| 572 | 581 | fprintf(fp, ";Game sound volume. (0.0 ~ 1.0)\n"); |
| 573 | 582 | fprintf(fp, "MasterVolume = 1.0\n"); |
| @@ -632,6 +641,11 @@ | ||
| 632 | 641 | default: ScreenWidth = DEFAULT_SCREEN_WIDTH; ScreenHeight = DEFAULT_SCREEN_HEIGHT; break; |
| 633 | 642 | } |
| 634 | 643 | |
| 644 | + //マウス移動量制限フラグ | |
| 645 | + mode = INIConfig.GetINIFileInt("Input", "MouseLimit", 1, NULL); | |
| 646 | + if( mode == 0 ){ MouseLimitFlag = false; } | |
| 647 | + else{ MouseLimitFlag = true; } | |
| 648 | + | |
| 635 | 649 | //音量取得 |
| 636 | 650 | mastervolume = INIConfig.GetINIFileFloat("Sounds", "MasterVolume", 1.0f, NULL); |
| 637 | 651 | if( mastervolume < 0.0f ){ mastervolume = 0.0f; } |
| @@ -660,6 +674,7 @@ | ||
| 660 | 674 | ShowArmFlag = false; |
| 661 | 675 | ScreenWidth = DEFAULT_SCREEN_WIDTH; |
| 662 | 676 | ScreenHeight = DEFAULT_SCREEN_HEIGHT; |
| 677 | + MouseLimitFlag = true; | |
| 663 | 678 | mastervolume = 1.0f; |
| 664 | 679 | } |
| 665 | 680 |
| @@ -691,6 +706,13 @@ | ||
| 691 | 706 | return ScreenHeight; |
| 692 | 707 | } |
| 693 | 708 | |
| 709 | +//! @brief マウス移動量制限フラグ | |
| 710 | +//! @return 値 | |
| 711 | +bool Config::GetMouseLimitFlag() | |
| 712 | +{ | |
| 713 | + return MouseLimitFlag; | |
| 714 | +} | |
| 715 | + | |
| 694 | 716 | //! @brief 音量設定を取得 |
| 695 | 717 | //! @return 値 |
| 696 | 718 | float Config::GetVolume() |
| @@ -83,6 +83,7 @@ | ||
| 83 | 83 | bool ShowArmFlag; //!< 腕表示フラグ |
| 84 | 84 | int ScreenWidth; //!< 画面解像度(幅) |
| 85 | 85 | int ScreenHeight; //!< 画面解像度(高さ) |
| 86 | + bool MouseLimitFlag; //!< マウス移動量制限フラグ | |
| 86 | 87 | float mastervolume; //!< 音量 |
| 87 | 88 | |
| 88 | 89 | public: |
| @@ -120,6 +121,7 @@ | ||
| 120 | 121 | bool GetShowArmFlag(); |
| 121 | 122 | int GetScreenWidth(); |
| 122 | 123 | int GetScreenHeight(); |
| 124 | + bool GetMouseLimitFlag(); | |
| 123 | 125 | float GetVolume(); |
| 124 | 126 | }; |
| 125 | 127 |
| @@ -99,6 +99,9 @@ | ||
| 99 | 99 | Resource.LoadBulletSound(); |
| 100 | 100 | Resource.LoadEffectTexture(); |
| 101 | 101 | |
| 102 | + //入力処理設定 | |
| 103 | + inputCtrl.SetMouseLimitFlag( GameConfig.GetMouseLimitFlag() ); | |
| 104 | + | |
| 102 | 105 | //効果音初期化 |
| 103 | 106 | float volume; |
| 104 | 107 | if( GameConfig.GetSoundFlag() == false ){ |
| @@ -42,6 +42,7 @@ | ||
| 42 | 42 | #else |
| 43 | 43 | InitFlag = false; |
| 44 | 44 | #endif |
| 45 | + MouseLimitFlag = true; | |
| 45 | 46 | |
| 46 | 47 | //キーボード設定値初期化 |
| 47 | 48 | for(int i=0; i<256; i++){ |
| @@ -278,6 +279,14 @@ | ||
| 278 | 279 | } |
| 279 | 280 | #endif |
| 280 | 281 | |
| 282 | +//! @brief マウス移動量を制限するフラグ設定 | |
| 283 | +//! @param flag 有効:true 無効:false | |
| 284 | +//! @attention マウス入力量がchar型 8bit相当になります。 | |
| 285 | +void InputControl::SetMouseLimitFlag(bool flag) | |
| 286 | +{ | |
| 287 | + MouseLimitFlag = flag; | |
| 288 | +} | |
| 289 | + | |
| 281 | 290 | //! @brief 入力デバイスの状態を更新 |
| 282 | 291 | //! @param mousemode マウスの座標取得 絶対値(座標):false 相対値(移動量):true |
| 283 | 292 | void InputControl::GetInputState(bool mousemode) |
| @@ -391,15 +400,15 @@ | ||
| 391 | 400 | } |
| 392 | 401 | #endif |
| 393 | 402 | |
| 394 | -#ifdef ENABLE_INPUT_MOUSE8BIT | |
| 395 | - //マウスが相対値(移動量)取得モードならば、char型 8bit相当にする。 | |
| 396 | - if( mousemode == true ){ | |
| 397 | - if( mx > 127 ) { mx = 127; } | |
| 398 | - if( mx < -128 ){ mx = -128; } | |
| 399 | - if( my > 127 ) { my = 127; } | |
| 400 | - if( my < -128 ){ my = -128; } | |
| 403 | + if( MouseLimitFlag == true ){ | |
| 404 | + //マウスが相対値(移動量)取得モードならば、char型 8bit相当にする。 | |
| 405 | + if( mousemode == true ){ | |
| 406 | + if( mx > 127 ) { mx = 127; } | |
| 407 | + if( mx < -128 ){ mx = -128; } | |
| 408 | + if( my > 127 ) { my = 127; } | |
| 409 | + if( my < -128 ){ my = -128; } | |
| 410 | + } | |
| 401 | 411 | } |
| 402 | -#endif | |
| 403 | 412 | } |
| 404 | 413 | |
| 405 | 414 | //! @brief マウスを中心に移動 |
| @@ -70,6 +70,7 @@ | ||
| 70 | 70 | #else |
| 71 | 71 | bool InitFlag; //!< 初期化フラグ |
| 72 | 72 | #endif |
| 73 | + bool MouseLimitFlag; //!< マウス移動量を制限するフラグ | |
| 73 | 74 | char keys[256]; //!< キー情報を格納する配列 |
| 74 | 75 | char keys_lt[256]; //!< (前回の)キー情報を格納する配列 |
| 75 | 76 | int mx; //!< マウスのX座標 |
| @@ -97,6 +98,7 @@ | ||
| 97 | 98 | ~InputControl(); |
| 98 | 99 | int InitInput(WindowControl *WindowCtrl); |
| 99 | 100 | void DestroyInput(); |
| 101 | + void SetMouseLimitFlag(bool flag); | |
| 100 | 102 | void GetInputState(bool mousemode); |
| 101 | 103 | void MoveMouseCenter(); |
| 102 | 104 | bool CheckKeyNow(int id); |
| @@ -69,7 +69,6 @@ | ||
| 69 | 69 | |
| 70 | 70 | #define ENABLE_BUG_HUMANWEAPON //!< 範囲外の人・武器種類番号を用いたバグを再現する(コメント化で無効) |
| 71 | 71 | #define ENABLE_BUG_TEAMID //!< チーム番号を負数に設定した際のバグを再現する(コメント化で無効) |
| 72 | -#define ENABLE_INPUT_MOUSE8BIT //!< マウス入力をchar型 8bitにする(コメント化で無効) | |
| 73 | 72 | #define ENABLE_WEAPONNAME_SCALING //!< 武器名が長い場合に表示を縮小する(コメント化で無効) |
| 74 | 73 | #define ENABLE_ADDOBJ_PARAM8BIT //!< 追加小物の設定値をchar型 8bitにする(コメント化で無効) |
| 75 | 74 | #define ENABLE_DEBUGCONSOLE //!< デバック用コンソールの有効化(コメント化で機能無効) |