• 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

Revision211 (tree)
Time2018-11-25 17:13:06
Authorxops-mikan

Log Message

追加小物の管理方法を変更(複数読み込む改版が容易な設計に)、FF有効化フラグの管理方法を変更

Change Summary

Incremental Difference

--- trunk/datafile.cpp (revision 210)
+++ trunk/datafile.cpp (revision 211)
@@ -677,17 +677,14 @@
677677 strcpy(briefingtext, "");
678678 collision = false;
679679 screen = false;
680- strcpy(addsmallobject_modelpath, "");
681- strcpy(addsmallobject_texturepath, "");
682- addsmallobject_decide = 0;
683- addsmallobject_hp = 0;
684- strcpy(addsmallobject_soundpath, "");
685- addsmallobject_jump = 0;
680+ AddSmallObjectData = new addsmallobject[MAX_ADDSMALLOBJECT];
686681 }
687682
688683 //! @brief ディストラクタ
689684 MIFInterface::~MIFInterface()
690-{}
685+{
686+ if( AddSmallObjectData != NULL ){ delete [] AddSmallObjectData; }
687+}
691688
692689 //! @brief データファイルを読みこむ
693690 //! @param fname ファイル名
@@ -741,12 +738,14 @@
741738
742739
743740 //追加小物情報を初期値へ
744- strcpy(addsmallobject_modelpath, "");
745- strcpy(addsmallobject_texturepath, "");
746- addsmallobject_decide = 0;
747- addsmallobject_hp = 0;
748- strcpy(addsmallobject_soundpath, "");
749- addsmallobject_jump = 0;
741+ for(int i=0; i<MAX_ADDSMALLOBJECT; i++){
742+ strcpy(AddSmallObjectData[i].modelpath, "");
743+ strcpy(AddSmallObjectData[i].texturepath, "");
744+ AddSmallObjectData[i].decide = 0;
745+ AddSmallObjectData[i].hp = 0;
746+ strcpy(AddSmallObjectData[i].soundpath, "");
747+ AddSmallObjectData[i].jump = 0;
748+ }
750749
751750 //何かしらの追加小物情報ファイルが指定されていれば
752751 if( (strcmp(addsmallobject_path, "") != 0)&&(strcmp(addsmallobject_path, "!") != 0) ){
@@ -910,6 +909,13 @@
910909 int MIFInterface::LoadAddSmallObjectFiledata(char *fname)
911910 {
912911 FILE *fp;
912+ char str1[_MAX_PATH];
913+ char str2[_MAX_PATH];
914+ char str3[32];
915+ char str4[32];
916+ char str5[_MAX_PATH];
917+ char str6[32];
918+
913919 char str[64];
914920
915921 #ifdef ENABLE_PATH_DELIMITER_SLASH
@@ -925,42 +931,60 @@
925931 //ファイルを開く
926932 fp = fopen( fname, "r" );
927933 if( fp != NULL ){
928- //モデルデータパス
929- fgets(addsmallobject_modelpath, _MAX_PATH, fp);
930- DeleteLinefeed(addsmallobject_modelpath);
934+ for(int i=0; i<MAX_ADDSMALLOBJECT; i++){
935+ //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);
931942
932- //テクスチャパス
933- fgets(addsmallobject_texturepath, _MAX_PATH, fp);
934- DeleteLinefeed(addsmallobject_texturepath);
943+ //6行すべて取得できなければ失敗
944+ if( (str1 == NULL)||(str2 == NULL)||(str3 == NULL)||(str4 == NULL)||(str5 == NULL)||(str6 == NULL) ){
945+ break;
946+ }
935947
936- //当たり判定の大きさ
937- fgets(str, 16, fp);
938- DeleteLinefeed(str);
939- addsmallobject_decide = atoi(str);
948+
949+ //モデルデータパス
950+ DeleteLinefeed(str1);
951+ strcpy(AddSmallObjectData[i].modelpath, str1);
952+
953+ //テクスチャパス
954+ DeleteLinefeed(str2);
955+ strcpy(AddSmallObjectData[i].texturepath, str2);
956+
957+ //当たり判定の大きさ
958+ DeleteLinefeed(str3);
959+ AddSmallObjectData[i].decide = atoi(str3);
940960 #ifdef ENABLE_ADDOBJ_PARAM8BIT
941- addsmallobject_decide = addsmallobject_decide & 0x0000007F;
961+ AddSmallObjectData[i].decide = AddSmallObjectData[i].decide & 0x0000007F;
942962 #endif
943963
944- //耐久力
945- fgets(str, 16, fp);
946- DeleteLinefeed(str);
947- addsmallobject_hp = atoi(str);
964+ //耐久力
965+ DeleteLinefeed(str4);
966+ AddSmallObjectData[i].hp = atoi(str4);
948967 #ifdef ENABLE_ADDOBJ_PARAM8BIT
949- addsmallobject_hp = addsmallobject_hp & 0x0000007F;
968+ AddSmallObjectData[i].hp = AddSmallObjectData[i].hp & 0x0000007F;
950969 #endif
951970
952- //サウンドデータパス
953- fgets(addsmallobject_soundpath, _MAX_PATH, fp);
954- DeleteLinefeed(addsmallobject_soundpath);
971+ //サウンドデータパス
972+ DeleteLinefeed(str5);
973+ strcpy(AddSmallObjectData[i].soundpath, str5);
955974
956- //飛び具合
957- fgets(str, 16, fp);
958- DeleteLinefeed(str);
959- addsmallobject_jump = atoi(str);
975+ //飛び具合
976+ DeleteLinefeed(str6);
977+ AddSmallObjectData[i].jump = atoi(str6);
960978 #ifdef ENABLE_ADDOBJ_PARAM8BIT
961- addsmallobject_jump = addsmallobject_jump & 0x000000FF;
979+ AddSmallObjectData[i].jump = AddSmallObjectData[i].jump & 0x000000FF;
962980 #endif
963981
982+ //次の追加小物情報の前にある、ダミー 1行を読み出し
983+ if( i+1 < MAX_ADDSMALLOBJECT ){
984+ fgets(str, 32, fp);
985+ }
986+ }
987+
964988 //ファイルハンドルを開放
965989 fclose( fp );
966990
@@ -1060,45 +1084,57 @@
10601084 }
10611085
10621086 //! @brief 追加小物のモデルデータパスを取得
1087+//! @param id データ番号(通常は 0 固定)
10631088 //! @return モデルデータパスのポインタ(最大:_MAX_PATH)
1064-char* MIFInterface::GetAddSmallobjectModelPath()
1089+char* MIFInterface::GetAddSmallobjectModelPath(int id)
10651090 {
1066- return addsmallobject_modelpath;
1091+ if( (id < 0)||(MAX_ADDSMALLOBJECT-1 < id) ){ return NULL; }
1092+ return AddSmallObjectData[id].modelpath;
10671093 }
10681094
10691095 //! @brief 追加小物のテクスチャパスを取得
1096+//! @param id データ番号(通常は 0 固定)
10701097 //! @return テクスチャパスのポインタ(最大:_MAX_PATH)
1071-char* MIFInterface::GetAddSmallobjectTexturePath()
1098+char* MIFInterface::GetAddSmallobjectTexturePath(int id)
10721099 {
1073- return addsmallobject_texturepath;
1100+ if( (id < 0)||(MAX_ADDSMALLOBJECT-1 < id) ){ return NULL; }
1101+ return AddSmallObjectData[id].texturepath;
10741102 }
10751103
10761104 //! @brief 追加小物の当たり判定の大きさを取得
1105+//! @param id データ番号(通常は 0 固定)
10771106 //! @return 当たり判定の大きさ
1078-int MIFInterface::GetAddSmallobjectDecide()
1107+int MIFInterface::GetAddSmallobjectDecide(int id)
10791108 {
1080- return addsmallobject_decide;
1109+ if( (id < 0)||(MAX_ADDSMALLOBJECT-1 < id) ){ return 0; }
1110+ return AddSmallObjectData[id].decide;
10811111 }
10821112
10831113 //! @brief 追加小物の耐久力を取得
1114+//! @param id データ番号(通常は 0 固定)
10841115 //! @return 耐久力
1085-int MIFInterface::GetAddSmallobjectHP()
1116+int MIFInterface::GetAddSmallobjectHP(int id)
10861117 {
1087- return addsmallobject_hp;
1118+ if( (id < 0)||(MAX_ADDSMALLOBJECT-1 < id) ){ return 0; }
1119+ return AddSmallObjectData[id].hp;
10881120 }
10891121
10901122 //! @brief 追加小物のサウンドデータパスを取得
1123+//! @param id データ番号(通常は 0 固定)
10911124 //! @return サウンドデータパスのポインタ(最大:_MAX_PATH)
1092-char* MIFInterface::GetAddSmallobjectSoundPath()
1125+char* MIFInterface::GetAddSmallobjectSoundPath(int id)
10931126 {
1094- return addsmallobject_soundpath;
1127+ if( (id < 0)||(MAX_ADDSMALLOBJECT-1 < id) ){ return NULL; }
1128+ return AddSmallObjectData[id].soundpath;
10951129 }
10961130
10971131 //! @brief 追加小物の飛び具合を取得
1132+//! @param id データ番号(通常は 0 固定)
10981133 //! @return 飛び具合
1099-int MIFInterface::GetAddSmallobjectJump()
1134+int MIFInterface::GetAddSmallobjectJump(int id)
11001135 {
1101- return addsmallobject_jump;
1136+ if( (id < 0)||(MAX_ADDSMALLOBJECT-1 < id) ){ return 0; }
1137+ return AddSmallObjectData[id].jump;
11021138 }
11031139
11041140 //! @brief コンストラクタ
--- trunk/datafile.h (revision 210)
+++ trunk/datafile.h (revision 211)
@@ -37,6 +37,11 @@
3737
3838 #define MAX_POINTS 200 //!< 最大ポイント数
3939
40+//! @brief 追加小物の数
41+//! @attention 設定値を増やす場合、MAX_MODEL・MAX_TEXTURE・MAX_LOADSOUNDの値も適切に見直すこと
42+//! @note 追加小物設定ファイルの下部に、続けて次の追加小物の設定値を記載します。ただし、各追加小物の設定値の間にダミー行("//"推奨)を挿んでください。
43+#define MAX_ADDSMALLOBJECT 1
44+
4045 #define MAX_POINTMESSAGES 16 //!< .msgファイルの最大メッセージ数
4146 #define MAX_POINTMESSAGEBYTE (71+2) //!< .msgファイル 1行あたりの最大バイト数
4247
@@ -85,6 +90,16 @@
8590 signed char p4; //!< Param
8691 };
8792
93+//! 追加小物用の構造体
94+struct addsmallobject{
95+ char modelpath[_MAX_PATH]; //!< モデルデータパス
96+ char texturepath[_MAX_PATH]; //!< テクスチャパス
97+ int decide; //!< 当たり判定の大きさ
98+ int hp; //!< 耐久力
99+ char soundpath[_MAX_PATH]; //!< サウンドデータパス
100+ int jump; //!< 飛び具合
101+};
102+
88103 //! @brief データを管理するクラス(基底クラス)
89104 //! @details ゲームのデータを、ファイルから読み込み処理するクラス群の基底クラスです。
90105 class DataInterface
@@ -157,12 +172,7 @@
157172 char briefingtext[816]; //!< ブリーフィング文章・本文
158173 bool collision; //!< 当たり判定を多めに行う
159174 bool screen; //!< 画面を暗めにする
160- char addsmallobject_modelpath[_MAX_PATH]; //!< 追加小物のモデルデータパス
161- char addsmallobject_texturepath[_MAX_PATH]; //!< 追加小物のテクスチャパス
162- int addsmallobject_decide; //!< 追加小物の当たり判定の大きさ
163- int addsmallobject_hp; //!< 追加小物の耐久力
164- char addsmallobject_soundpath[_MAX_PATH]; //!< 追加小物のサウンドデータパス
165- int addsmallobject_jump; //!< 追加小物の飛び具合
175+ addsmallobject *AddSmallObjectData; //!< 追加小物の情報
166176
167177 int LoadDefaultTextFiledata(char *fname);
168178 int LoadMissionInfoFiledata(char *fname);
@@ -182,12 +192,12 @@
182192 bool GetCollisionFlag();
183193 bool GetScreenFlag();
184194 char* GetAddSmallobjectFile();
185- char* GetAddSmallobjectModelPath();
186- char* GetAddSmallobjectTexturePath();
187- int GetAddSmallobjectDecide();
188- int GetAddSmallobjectHP();
189- char* GetAddSmallobjectSoundPath();
190- int GetAddSmallobjectJump();
195+ char* GetAddSmallobjectModelPath(int id);
196+ char* GetAddSmallobjectTexturePath(int id);
197+ int GetAddSmallobjectDecide(int id);
198+ int GetAddSmallobjectHP(int id);
199+ char* GetAddSmallobjectSoundPath(int id);
200+ int GetAddSmallobjectJump(int id);
191201 };
192202
193203 //! @brief ADDONリストを管理するクラス
--- trunk/gamemain.cpp (revision 210)
+++ trunk/gamemain.cpp (revision 211)
@@ -1125,7 +1125,9 @@
11251125 }
11261126
11271127 //追加小物を読み込む
1128- Resource.LoadAddSmallObject(MIFdata.GetAddSmallobjectModelPath(), MIFdata.GetAddSmallobjectTexturePath(), MIFdata.GetAddSmallobjectSoundPath());
1128+ for(int i=0; i<MAX_ADDSMALLOBJECT; i++){
1129+ Resource.LoadAddSmallObject(i, MIFdata.GetAddSmallobjectModelPath(i), MIFdata.GetAddSmallobjectTexturePath(i), MIFdata.GetAddSmallobjectSoundPath(i));
1130+ }
11291131
11301132 //ブロックデータ読み込み
11311133 blockflag = BlockData.LoadFiledata(bdata);
@@ -1253,8 +1255,10 @@
12531255 }
12541256
12551257 //追加小物を解放⇒読み込む
1256- Resource.CleanupAddSmallObject();
1257- Resource.LoadAddSmallObject(MIFdata.GetAddSmallobjectModelPath(), MIFdata.GetAddSmallobjectTexturePath(), MIFdata.GetAddSmallobjectSoundPath());
1258+ for(int i=0; i<MAX_ADDSMALLOBJECT; i++){
1259+ Resource.CleanupAddSmallObject(i);
1260+ Resource.LoadAddSmallObject(i, MIFdata.GetAddSmallobjectModelPath(i), MIFdata.GetAddSmallobjectTexturePath(i), MIFdata.GetAddSmallobjectSoundPath(i));
1261+ }
12581262
12591263 //ブロックデータ初期化
12601264 d3dg->LoadMapdata(&BlockData, path);
@@ -3589,12 +3593,16 @@
35893593
35903594 //FF(同士討ち)有効化
35913595 if( strcmp(NewCommand, "ff") == 0 ){
3592- if( ObjMgr.GetFriendlyFireFlag() == false ){
3593- ObjMgr.SetFriendlyFireFlag(true);
3596+ if( ObjMgr.GetFriendlyFireFlag(0) == false ){ //とりあえず No.0 で判定
3597+ for(int i=0; i<MAX_HUMAN; i++){
3598+ ObjMgr.SetFriendlyFireFlag(i, true);
3599+ }
35943600 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "Enable Friendly Fire.");
35953601 }
35963602 else{
3597- ObjMgr.SetFriendlyFireFlag(false);
3603+ for(int i=0; i<MAX_HUMAN; i++){
3604+ ObjMgr.SetFriendlyFireFlag(i, false);
3605+ }
35983606 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "Disable Friendly Fire.");
35993607 }
36003608 }
@@ -3836,7 +3844,9 @@
38363844 ObjMgr.Cleanup();
38373845
38383846 //追加小物を解放
3839- Resource.CleanupAddSmallObject();
3847+ for(int i=0; i<MAX_ADDSMALLOBJECT; i++){
3848+ Resource.CleanupAddSmallObject(i);
3849+ }
38403850
38413851 //背景空解放
38423852 Resource.CleanupSkyModelTexture();
--- trunk/object.cpp (revision 210)
+++ trunk/object.cpp (revision 211)
@@ -2192,9 +2192,9 @@
21922192 add_ry = 0.0f;
21932193 jump_cnt = 0;
21942194
2195- if( id_param == TOTAL_PARAMETERINFO_SMALLOBJECT+1 -1 ){
2195+ if( (TOTAL_PARAMETERINFO_SMALLOBJECT <= id_param)&&(id_param <= (TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT -1)) ){
21962196 if( MIFdata != NULL ){
2197- hp = MIFdata->GetAddSmallobjectHP();
2197+ hp = MIFdata->GetAddSmallobjectHP(id_param - TOTAL_PARAMETERINFO_SMALLOBJECT);
21982198 }
21992199 }
22002200 else{
@@ -2239,8 +2239,8 @@
22392239 //下方向に当たり判定
22402240 if( CollD->CheckALLBlockIntersectRay(pos_x, pos_y + COLLISION_ADDSIZE, pos_z, 0, -1, 0, NULL, NULL, &Dist, 1000.0f) == true ){
22412241 //当たり判定の大きさを取得
2242- if( id_parameter == TOTAL_PARAMETERINFO_SMALLOBJECT+1 -1 ){
2243- Dist -= (float)MIFdata->GetAddSmallobjectDecide()/10.0f;
2242+ if( (TOTAL_PARAMETERINFO_SMALLOBJECT <= id_parameter)&&(id_parameter <= (TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT -1)) ){
2243+ Dist -= (float)MIFdata->GetAddSmallobjectDecide(id_parameter - TOTAL_PARAMETERINFO_SMALLOBJECT)/10.0f;
22442244 }
22452245 else{
22462246 if( Param->GetSmallObject(id_parameter, &ParamData) == 0 ){
@@ -2287,8 +2287,8 @@
22872287 int jump;
22882288
22892289 //飛び具合を取得
2290- if( id_parameter == TOTAL_PARAMETERINFO_SMALLOBJECT+1 -1 ){
2291- jump = MIFdata->GetAddSmallobjectJump();
2290+ if( (TOTAL_PARAMETERINFO_SMALLOBJECT <= id_parameter)&&(id_parameter <= (TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT -1)) ){
2291+ jump = MIFdata->GetAddSmallobjectJump(id_parameter - TOTAL_PARAMETERINFO_SMALLOBJECT);
22922292 }
22932293 else{
22942294 SmallObjectParameter paramdata;
@@ -2318,8 +2318,8 @@
23182318 int jump;
23192319
23202320 //飛び具合を取得
2321- if( id_parameter == TOTAL_PARAMETERINFO_SMALLOBJECT+1 -1 ){
2322- jump = MIFdata->GetAddSmallobjectJump();
2321+ if( (TOTAL_PARAMETERINFO_SMALLOBJECT <= id_parameter)&&(id_parameter <= (TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT -1)) ){
2322+ jump = MIFdata->GetAddSmallobjectJump(id_parameter - TOTAL_PARAMETERINFO_SMALLOBJECT);
23232323 }
23242324 else{
23252325 SmallObjectParameter paramdata;
--- trunk/objectmanager.cpp (revision 210)
+++ trunk/objectmanager.cpp (revision 211)
@@ -48,7 +48,7 @@
4848 Human_ShotFlag = new bool[MAX_HUMAN];
4949 BulletObj_HumanIndex = new BulletObjectHumanIndex[MAX_BULLET];
5050 AddCollisionFlag = false;
51- FriendlyFire = false;
51+ FriendlyFire = new bool[MAX_HUMAN];
5252 Player_HumanID = 0;
5353 Human_FrameTextureRefresh = new bool[MAX_HUMAN];
5454
@@ -81,6 +81,7 @@
8181 if( Human_headshot != NULL ){ delete [] Human_headshot; }
8282 if( Human_ShotFlag != NULL ){ delete [] Human_ShotFlag; }
8383 if( BulletObj_HumanIndex != NULL ){ delete [] BulletObj_HumanIndex; }
84+ if( FriendlyFire != NULL ){ delete [] FriendlyFire; }
8485 if( Human_FrameTextureRefresh != NULL ){ delete [] Human_FrameTextureRefresh; }
8586
8687 if( ObjectLog != NULL ){ delete ObjectLog; }
@@ -726,7 +727,7 @@
726727 HumanIndex[i].GetPosData(&ox, &oy, &oz, NULL);
727728 HumanIndex[i].GetParamData(NULL, NULL, NULL, &h_teamid);
728729
729- if( FriendlyFire == false ){
730+ if( FriendlyFire[i] == false ){
730731 //同じチーム番号(味方)なら処理しない
731732 if( h_teamid == teamid ){ continue; }
732733 }
@@ -769,8 +770,8 @@
769770 SmallObjectIndex[i].GetParamData(&id, NULL);
770771
771772 //当たり判定の大きさを取得
772- if( id == TOTAL_PARAMETERINFO_SMALLOBJECT+1 -1 ){
773- decide = (float)MIFdata->GetAddSmallobjectDecide()*SMALLOBJECT_COLLISIONSCALE;
773+ if( (TOTAL_PARAMETERINFO_SMALLOBJECT <= id)&&(id <= (TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT -1)) ){
774+ decide = (float)MIFdata->GetAddSmallobjectDecide(id - TOTAL_PARAMETERINFO_SMALLOBJECT)*SMALLOBJECT_COLLISIONSCALE;
774775 }
775776 else{
776777 SmallObjectParameter Param;
@@ -870,8 +871,8 @@
870871 SmallObjectIndex[SmallObject_id].GetParamData(&id, NULL);
871872
872873 //当たり判定の大きさを取得
873- if( id == TOTAL_PARAMETERINFO_SMALLOBJECT+1 -1 ){
874- decide = (int)( (float)MIFdata->GetAddSmallobjectDecide()*SMALLOBJECT_COLLISIONSCALE );
874+ if( (TOTAL_PARAMETERINFO_SMALLOBJECT <= id)&&(id <= (TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT -1)) ){
875+ decide = (int)( (float)MIFdata->GetAddSmallobjectDecide(id - TOTAL_PARAMETERINFO_SMALLOBJECT)*SMALLOBJECT_COLLISIONSCALE );
875876 }
876877 else{
877878 SmallObjectParameter Param;
@@ -1386,9 +1387,13 @@
13861387 void ObjectManager::LoadPointData()
13871388 {
13881389 AddCollisionFlag = false;
1389- FriendlyFire = false;
13901390 Player_HumanID = 0;
13911391
1392+ //FF(同士討ち)有効化フラグ設定
1393+ for(int i=0; i<MAX_HUMAN; i++){
1394+ FriendlyFire[i] = false;
1395+ }
1396+
13921397 //人のテクスチャリフレッシュフラグ初期化
13931398 for(int i=0; i<MAX_HUMAN; i++){
13941399 Human_FrameTextureRefresh[i] = false;
@@ -1595,17 +1600,21 @@
15951600 }
15961601
15971602 //! @brief FF(同士討ち)有効化フラグを取得
1603+//! @param id データ番号
15981604 //! @return フラグ
1599-bool ObjectManager::GetFriendlyFireFlag()
1605+bool ObjectManager::GetFriendlyFireFlag(int id)
16001606 {
1601- return FriendlyFire;
1607+ if( (id < 0)||(MAX_HUMAN-1 < id) ){ return false; }
1608+ return FriendlyFire[id];
16021609 }
16031610
16041611 //! @brief FF(同士討ち)有効化フラグを設定
1612+//! @param id データ番号
16051613 //! @param flag フラグ
1606-void ObjectManager::SetFriendlyFireFlag(bool flag)
1614+void ObjectManager::SetFriendlyFireFlag(int id, bool flag)
16071615 {
1608- FriendlyFire = flag;
1616+ if( (id < 0)||(MAX_HUMAN-1 < id) ){ return; }
1617+ FriendlyFire[id] = flag;
16091618 }
16101619
16111620 //! @brief プレイヤー番号を取得
--- trunk/objectmanager.h (revision 210)
+++ trunk/objectmanager.h (revision 211)
@@ -90,7 +90,7 @@
9090 class BulletObjectHumanIndex *BulletObj_HumanIndex; //!< 弾対人判定用オブジェクト
9191
9292 bool AddCollisionFlag; //!< 追加の当たり判定
93- bool FriendlyFire; //!< FF(同士討ち)有効化
93+ bool *FriendlyFire; //!< FF(同士討ち)有効化
9494
9595 int Player_HumanID; //!< プレイヤーが操作する人オブジェクトのID
9696
@@ -136,8 +136,8 @@
136136 void LoadPointData();
137137 void Recovery();
138138 void SetAddCollisionFlag(bool flag);
139- bool GetFriendlyFireFlag();
140- void SetFriendlyFireFlag(bool flag);
139+ bool GetFriendlyFireFlag(int id);
140+ void SetFriendlyFireFlag(int id, bool flag);
141141 int GetPlayerID();
142142 void SetPlayerID(int id);
143143 human* GetHumanObject(int id);
--- trunk/resource.cpp (revision 210)
+++ trunk/resource.cpp (revision 211)
@@ -60,7 +60,7 @@
6060 weapon_texture[i] = -1;
6161 weapon_sound[i] = -1;
6262 }
63- for(int i=0; i<TOTAL_PARAMETERINFO_SMALLOBJECT+1; i++){
63+ for(int i=0; i<(TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT); i++){
6464 smallobject_model[i] = -1;
6565 smallobject_texture[i] = -1;
6666 smallobject_sound[i] = -1;
@@ -519,7 +519,7 @@
519519 //! @return 成功:0 失敗:1
520520 int ResourceManager::GetSmallObjectModelTexture(int id, int *model, int *texture)
521521 {
522- if( (id < 0)||((TOTAL_PARAMETERINFO_SMALLOBJECT+1 -1) < id ) ){ return 1; }
522+ if( (id < 0)||((TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT -1) < id ) ){ return 1; }
523523
524524 *model = smallobject_model[id];
525525 *texture = smallobject_texture[id];
@@ -531,7 +531,7 @@
531531 {
532532 if( d3dg == NULL ){ return; }
533533
534- for(int i=0; i<TOTAL_PARAMETERINFO_SMALLOBJECT+1; i++){
534+ for(int i=0; i<(TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT); i++){
535535 d3dg->CleanupModel(smallobject_model[i]);
536536 d3dg->CleanupTexture(smallobject_texture[i]);
537537 smallobject_model[i] = -1;
@@ -580,7 +580,7 @@
580580 int ResourceManager::GetSmallObjectSound(int id)
581581 {
582582 if( SoundCtrl == NULL ){ return -1; }
583- if( (id < 0)||((TOTAL_PARAMETERINFO_SMALLOBJECT+1 -1) < id ) ){ return -1; }
583+ if( (id < 0)||((TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT -1) < id ) ){ return -1; }
584584 return smallobject_sound[id];
585585 }
586586
@@ -589,7 +589,7 @@
589589 {
590590 if( SoundCtrl == NULL ){ return; }
591591
592- for(int i=0; i<TOTAL_PARAMETERINFO_SMALLOBJECT+1; i++){
592+ for(int i=0; i<(TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT); i++){
593593 SoundCtrl->CleanupSound(smallobject_sound[i]);
594594 smallobject_sound[i] = -1;
595595 }
@@ -596,16 +596,18 @@
596596 }
597597
598598 //! @brief 追加小物のモデル・テクスチャ・サウンドを取得
599+//! @param id データ番号(通常は 0 固定)
599600 //! @param modelpath モデルデータのパス
600601 //! @param texturepath テクスチャデータのパス
601602 //! @param soundpath サウンドデータのパス
602603 //! @return 成功:0 失敗:1以上
603-int ResourceManager::LoadAddSmallObject(char *modelpath, char *texturepath, char *soundpath)
604+int ResourceManager::LoadAddSmallObject(int id, char *modelpath, char *texturepath, char *soundpath)
604605 {
605606 if( d3dg == NULL ){ return 1; }
606607 if( SoundCtrl == NULL ){ return 1; }
608+ if( (id < 0)||(MAX_ADDSMALLOBJECT-1 < id) ){ return -1; }
607609
608- int dataid = TOTAL_PARAMETERINFO_SMALLOBJECT+1 -1;
610+ int dataid = TOTAL_PARAMETERINFO_SMALLOBJECT + id;
609611 int cnt = 0;
610612
611613 smallobject_model[dataid] = d3dg->LoadModel(modelpath);
@@ -619,12 +621,14 @@
619621 }
620622
621623 //! @brief 追加小物のモデル・テクスチャ・サウンドを解放
622-void ResourceManager::CleanupAddSmallObject()
624+//! @param id データ番号(通常は 0 固定)
625+void ResourceManager::CleanupAddSmallObject(int id)
623626 {
624627 if( d3dg == NULL ){ return; }
625628 if( SoundCtrl == NULL ){ return; }
629+ if( (id < 0)||(MAX_ADDSMALLOBJECT-1 < id) ){ return; }
626630
627- int dataid = TOTAL_PARAMETERINFO_SMALLOBJECT+1 -1;
631+ int dataid = TOTAL_PARAMETERINFO_SMALLOBJECT + id;
628632
629633 d3dg->CleanupModel(smallobject_model[dataid]);
630634 d3dg->CleanupTexture(smallobject_texture[dataid]);
--- trunk/resource.h (revision 210)
+++ trunk/resource.h (revision 211)
@@ -63,9 +63,9 @@
6363 int weapon_texture[TOTAL_PARAMETERINFO_WEAPON]; //!< 武器のテクスチャ認識番号
6464 int weapon_sound[TOTAL_PARAMETERINFO_WEAPON]; //!< 武器のサウンド認識番号
6565 int weapon_reloadsound; //!< 武器のリロードサウンド認識番号
66- int smallobject_model[TOTAL_PARAMETERINFO_SMALLOBJECT+1]; //!< 小物のモデル認識番号
67- int smallobject_texture[TOTAL_PARAMETERINFO_SMALLOBJECT+1]; //!< 小物のテクスチャ認識番号
68- int smallobject_sound[TOTAL_PARAMETERINFO_SMALLOBJECT+1]; //!< 小物のサウンド認識番号
66+ int smallobject_model[TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT]; //!< 小物のモデル認識番号
67+ int smallobject_texture[TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT]; //!< 小物のテクスチャ認識番号
68+ int smallobject_sound[TOTAL_PARAMETERINFO_SMALLOBJECT + MAX_ADDSMALLOBJECT]; //!< 小物のサウンド認識番号
6969 int bullet_model[TOTAL_PARAMETERINFO_BULLET]; //!< 弾のモデル
7070 int bullet_texture[TOTAL_PARAMETERINFO_BULLET]; //!< 弾のテクスチャ
7171
@@ -113,8 +113,8 @@
113113 int LoadSmallObjectSound();
114114 int GetSmallObjectSound(int id);
115115 void CleanupSmallObjectSound();
116- int LoadAddSmallObject(char *modelpath, char *texturepath, char *soundpath);
117- void CleanupAddSmallObject();
116+ int LoadAddSmallObject(int id, char *modelpath, char *texturepath, char *soundpath);
117+ void CleanupAddSmallObject(int id);
118118 int LoadBulletModelTexture();
119119 int GetBulletModelTexture(int id, int *model, int *texture);
120120 void CleanupBulletModelTexture();