X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
| Revision | 241 (tree) |
|---|---|
| Time | 2020-05-03 14:35:38 |
| Author | |
死亡時にリロードなどの処理を中断するように修正、連射モード切替カウントが有効な場合はリロード時は切り替えないように修正。
| @@ -739,21 +739,25 @@ | ||
| 739 | 739 | |
| 740 | 740 | //武器のショットモード切り替え先(新しい武器番号)を調べる |
| 741 | 741 | WeaponParameter ParamData; |
| 742 | - int ChangeWeapon; | |
| 742 | + int ChangeWeaponID, ChangeCnt; | |
| 743 | 743 | if( Param->GetWeapon(param_id, &ParamData) != 0 ){ return 1; } |
| 744 | - ChangeWeapon = ParamData.ChangeWeaponID; | |
| 744 | + ChangeWeaponID = ParamData.ChangeWeaponID; | |
| 745 | + ChangeCnt = ParamData.ChangeWeaponCnt; | |
| 745 | 746 | |
| 746 | 747 | //新しい武器番号が正しいか確認 |
| 747 | - if( ChangeWeapon == param_id ){ return 1; } | |
| 748 | - if( (ChangeWeapon < 0)||(TOTAL_PARAMETERINFO_WEAPON-1 < ChangeWeapon) ){ return 1; } | |
| 748 | + if( ChangeWeaponID == param_id ){ return 1; } | |
| 749 | + if( (ChangeWeaponID < 0)||(TOTAL_PARAMETERINFO_WEAPON-1 < ChangeWeaponID) ){ return 1; } | |
| 749 | 750 | |
| 751 | + //カウントが有効にもかかわらずリロード中なら切り替えない | |
| 752 | + if( (ChangeCnt > 0)&&(weaponreloadcnt > 0) ){ return 1; } | |
| 753 | + | |
| 750 | 754 | //設定を適用 |
| 751 | - weapon[selectweapon]->SetParamData(ChangeWeapon, lnbs, nbs, false); | |
| 755 | + weapon[selectweapon]->SetParamData(ChangeWeaponID, lnbs, nbs, false); | |
| 752 | 756 | |
| 753 | 757 | //もしスコープ使用中ならば |
| 754 | 758 | if( scopemode != 0 ){ |
| 755 | 759 | //新しい武器の情報を取得 |
| 756 | - if( Param->GetWeapon(ChangeWeapon, &ParamData) != 0 ){ return 1; } | |
| 760 | + if( Param->GetWeapon(ChangeWeaponID, &ParamData) != 0 ){ return 1; } | |
| 757 | 761 | |
| 758 | 762 | if( scopemode == ParamData.scopemode ){ |
| 759 | 763 | //同じスコープが使えるならば、何もせずスコープ維持 |
| @@ -769,10 +773,10 @@ | ||
| 769 | 773 | } |
| 770 | 774 | |
| 771 | 775 | //モーション実行 |
| 772 | - MotionCtrl->ChangeShotMode(ChangeWeapon); | |
| 776 | + MotionCtrl->ChangeShotMode(ChangeWeaponID); | |
| 773 | 777 | |
| 774 | 778 | //切り替え完了のカウント |
| 775 | - changeweaponidcnt = ParamData.ChangeWeaponCnt; | |
| 779 | + changeweaponidcnt = ChangeCnt; | |
| 776 | 780 | |
| 777 | 781 | return 0; |
| 778 | 782 | } |
| @@ -1135,6 +1139,12 @@ | ||
| 1135 | 1139 | //スコープモードを解除 |
| 1136 | 1140 | SetDisableScope(); |
| 1137 | 1141 | |
| 1142 | + //各種カウント初期化 | |
| 1143 | + selectweaponcnt = 0; | |
| 1144 | + weaponshotcnt = 0; | |
| 1145 | + weaponreloadcnt = 0; | |
| 1146 | + changeweaponidcnt = 0; | |
| 1147 | + | |
| 1138 | 1148 | //次のフレームの頭の座標を取得 |
| 1139 | 1149 | check_posx = pos_x + cos(rotation_x*-1 - (float)M_PI/2) * sin(add_ry) * HUMAN_HEIGHT; |
| 1140 | 1150 | check_posy = pos_y + cos(add_ry) * HUMAN_HEIGHT; |