X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
Revisão | 345 (tree) |
---|---|
Hora | 2023-01-15 17:50:03 |
Autor | xops-mikan |
追加設定ファイル(.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 //!< デバック用コンソールの有効化(コメント化で機能無効) |