• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。


Commit MetaInfo

Revision218 (tree)
Time2019-04-30 19:47:22
Authorxops-mikan

Log Message

追加小物複数読み込み時のバグを修正、AIデバック表示を改良、ObjectManager内の人の判定処理を修正

Change Summary

Incremental Difference

--- trunk/ai.cpp (revision 217)
+++ trunk/ai.cpp (revision 218)
@@ -1840,6 +1840,11 @@
18401840 void AIcontrol::GetMoveTargetPos(float *posx, float *posz, int *movemode)
18411841 {
18421842 MoveNavi->GetTargetPos(posx, posz, NULL, movemode, NULL);
1843+
1844+ if( (battlemode == AI_ACTION)||(battlemode == AI_CAUTION) ){
1845+ *posx = cautionback_posx;
1846+ *posz = cautionback_posz;
1847+ }
18431848 }
18441849
18451850 //! @brief 現在読み込んでいるポイントデータパス
--- trunk/datafile.cpp (revision 217)
+++ trunk/datafile.cpp (revision 218)
@@ -933,17 +933,13 @@
933933 if( fp != NULL ){
934934 for(int i=0; i<MAX_ADDSMALLOBJECT; i++){
935935 //6行取得
936- fgets(str1, _MAX_PATH, fp);
937- fgets(str2, _MAX_PATH, fp);
938- fgets(str3, 16, fp);
939- fgets(str4, 16, fp);
940- fgets(str5, _MAX_PATH, fp);
941- fgets(str6, 16, fp);
942-
943936 //6行すべて取得できなければ失敗
944- if( (str1 == NULL)||(str2 == NULL)||(str3 == NULL)||(str4 == NULL)||(str5 == NULL)||(str6 == NULL) ){
945- break;
946- }
937+ if( fgets(str1, _MAX_PATH, fp) == NULL ){ break; }
938+ if( fgets(str2, _MAX_PATH, fp) == NULL ){ break; }
939+ if( fgets(str3, 16, fp) == NULL ){ break; }
940+ if( fgets(str4, 16, fp) == NULL ){ break; }
941+ if( fgets(str5, _MAX_PATH, fp) == NULL ){ break; }
942+ if( fgets(str6, 16, fp) == NULL ){ break; }
947943
948944
949945 //モデルデータパス
@@ -981,7 +977,7 @@
981977
982978 //次の追加小物情報の前にある、ダミー 1行を読み出し
983979 if( i+1 < MAX_ADDSMALLOBJECT ){
984- fgets(str, 32, fp);
980+ if( fgets(str, 32, fp) == NULL ){ break; }
985981 }
986982 }
987983
--- trunk/object.cpp (revision 217)
+++ trunk/object.cpp (revision 218)
@@ -383,7 +383,6 @@
383383 //! @brief 武器を拾う
384384 //! @param in_weapon[] 設定するweaponクラスのポインタ
385385 //! @return 成功:1 失敗:0
386-//! @attention 人の種類が ゾンビ の場合、この関数は失敗します。
387386 int human::PickupWeapon(class weapon *in_weapon)
388387 {
389388 if( in_weapon == NULL ){
@@ -390,13 +389,6 @@
390389 return 0;
391390 }
392391
393- //人の種類が ゾンビ ならば、失敗
394- HumanParameter Paraminfo;
395- Param->GetHuman(id_parameter, &Paraminfo);
396- if( Paraminfo.type == 2 ){
397- return 0;
398- }
399-
400392 if( weapon[selectweapon] == NULL ){
401393 //武器を正しく拾えれば、所持武器として登録
402394 if( in_weapon->Pickup() == 0 ){
--- trunk/objectmanager.cpp (revision 217)
+++ trunk/objectmanager.cpp (revision 218)
@@ -1186,20 +1186,28 @@
11861186 if( in_human == NULL ){ return; }
11871187
11881188 int paramid;
1189- float hx, hy, hz, hrx, hry;
11901189 HumanParameter data;
1190+ bool robot;
11911191
1192- //各種パラメーターを取得
11931192 in_human->GetParamData(&paramid, NULL, NULL, NULL);
1194- in_human->GetPosData(&hx, &hy, &hz, &hrx);
1195- hry = in_human->GetDeadRy();
11961193
1197- //設定値を取得
11981194 if( GameParamInfo->GetHuman(paramid, &data) != 0 ){ return; }
11991195
1200- //もしロボットならば
12011196 if( data.type == 1 ){
1197+ robot = true;
1198+ }
1199+ else{
1200+ robot = false;
1201+ }
12021202
1203+ //もしロボットならば
1204+ if( robot == true ){
1205+ float hx, hy, hz, hrx, hry;
1206+
1207+ //各種パラメーターを取得
1208+ in_human->GetPosData(&hx, &hy, &hz, &hrx);
1209+ hry = in_human->GetDeadRy();
1210+
12031211 //腰辺りの座標を算出
12041212 hx += cos(hrx*-1 - (float)M_PI/2) * sin(hry) * HUMAN_HEIGHT/2;
12051213 hz += sin(hrx*-1 - (float)M_PI/2) * sin(hry) * HUMAN_HEIGHT/2;
@@ -1267,6 +1275,7 @@
12671275 //! @brief 武器を拾う
12681276 //! @param in_human 対象の人オブジェクト
12691277 //! @param in_weapon 対象の武器オブジェクト
1278+//! @attention 人の種類が ゾンビ の場合、この関数は失敗します。
12701279 void ObjectManager::PickupWeapon(human *in_human, weapon *in_weapon)
12711280 {
12721281 //無効な人ならば処理しない
@@ -1273,6 +1282,13 @@
12731282 if( in_human->GetEnableFlag() == false ){ return; }
12741283 if( in_human->GetHP() <= 0 ){ return; }
12751284
1285+ //人の種類が ゾンビ ならば、失敗
1286+ int paramid;
1287+ HumanParameter Paraminfo;
1288+ in_human->GetParamData(&paramid, NULL, NULL, NULL);
1289+ GameParamInfo->GetHuman(paramid, &Paraminfo);
1290+ if( Paraminfo.type == 2 ){ return; }
1291+
12761292 //初期化されている武器で、かつ誰も使っていない武器ならば〜
12771293 if( (in_weapon->GetEnableFlag() == true)&&(in_weapon->GetUsingFlag() == false) ){
12781294 float human_x, human_y, human_z;