• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#objective-cqtwindows誰得cocoapythonphprubygameguibathyscaphec翻訳omegat計画中(planning stage)frameworktwittertestdomvb.netdirectxbtronarduinopreviewerゲームエンジン

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


Commit MetaInfo

Revision186 (tree)
Zeit2017-10-14 01:34:19
Autorxops-mikan

Log Message

追加小物の設定値をchar型 8bitに換算するよう改良(定数宣言で変更可)、ファイル読み込みを一部関数化。

Ändern Zusammenfassung

Diff

--- trunk/datafile.cpp (revision 185)
+++ trunk/datafile.cpp (revision 186)
@@ -481,19 +481,31 @@
481481 }
482482 strcat(fname2, ".msg");
483483
484+ LoadMSGFiledata(fname2);
485+
486+ return 0;
487+}
488+
489+//! @brief メッセージデータファイルを読みこむ
490+//! @param fname ファイル名
491+//! @return 成功:0 失敗:1
492+int PointDataInterface::LoadMSGFiledata(char *fname)
493+{
494+ FILE *fp;
495+
484496 #ifdef ENABLE_PATH_DELIMITER_SLASH
485497 //パス区切り文字を変換
486- strcpy(fname2, ChangePathDelimiter(fname2));
498+ fname = ChangePathDelimiter(fname);
487499 #endif
488500
489- //ファイルを読み込み
490- fp = fopen( fname2, "r" );
491- if( fp != NULL ){
492501 #ifdef ENABLE_DEBUGLOG
493- //ログに出力
494- OutputLog.WriteLog(LOG_LOAD, "MSG", fname2);
502+ //ログに出力
503+ OutputLog.WriteLog(LOG_LOAD, "MSG", fname);
495504 #endif
496505
506+ //ファイルを読み込み
507+ fp = fopen( fname, "r" );
508+ if( fp != NULL ){
497509 //メッセージデータを取得
498510 for(int i=0; i<MAX_POINTMESSAGES; i++){
499511 if( fgets(text[i], MAX_POINTMESSAGEBYTE, fp) == NULL ){ break; }
@@ -504,22 +516,21 @@
504516 }
505517 }
506518
519+ //ファイルポインタを開放
520+ fclose( fp );
521+
507522 #ifdef ENABLE_DEBUGLOG
508523 //ログに出力
509524 OutputLog.WriteLog(LOG_COMPLETE, "", "");
510525 #endif
526+ return 0;
527+ }
511528
512- //ファイルポインタを開放
513- fclose( fp );
514- }
515- else{
516529 #ifdef ENABLE_DEBUGLOG
517- //ログに出力
518- OutputLog.WriteLog(LOG_CHECK, "MSG", "ファイルなし");
530+ //ログに出力
531+ OutputLog.WriteLog(LOG_ERROR, "", "");
519532 #endif
520- }
521-
522- return 0;
533+ return 1;
523534 }
524535
525536 //! @brief ポイントデータを取得
@@ -683,8 +694,6 @@
683694 //! @return 成功:0 失敗:1
684695 int MIFInterface::LoadFiledata(char *fname)
685696 {
686- char str[64];
687-
688697 #ifdef ENABLE_DEBUGLOG
689698 //ログに出力
690699 OutputLog.WriteLog(LOG_LOAD, "MIF", fname);
@@ -707,21 +716,128 @@
707716 }
708717 }
709718
710- FILE *fp;
711-
712719 #ifdef ENABLE_PATH_DELIMITER_SLASH
713720 //パス区切り文字を変換
714721 fname = ChangePathDelimiter(fname);
715722 #endif
716723
724+ if( mif == false ){
725+ if( LoadDefaultTextFiledata(fname) != 0 ){
726+ //briefing data open failed
727+ return 1;
728+ }
729+ }
730+ else{
731+ if( LoadMissionInfoFiledata(fname) != 0 ){
732+ //briefing data open failed
733+ return 1;
734+ }
735+ }
736+
737+#ifdef ENABLE_DEBUGLOG
738+ //ログに出力
739+ OutputLog.WriteLog(LOG_COMPLETE, "", "");
740+#endif
741+
742+
743+ //追加小物情報を初期値へ
744+ strcpy(addsmallobject_modelpath, "");
745+ strcpy(addsmallobject_texturepath, "");
746+ addsmallobject_decide = 0;
747+ addsmallobject_hp = 0;
748+ strcpy(addsmallobject_soundpath, "");
749+ addsmallobject_jump = 0;
750+
751+ //何かしらの追加小物情報ファイルが指定されていれば
752+ if( (strcmp(addsmallobject_path, "") != 0)&&(strcmp(addsmallobject_path, "!") != 0) ){
753+ LoadAddSmallObjectFiledata(addsmallobject_path);
754+ }
755+#ifdef ENABLE_DEBUGLOG
756+ else{
757+ //ログに出力
758+ OutputLog.WriteLog(LOG_CHECK, "(追加小物)", "ファイルなし");
759+ }
760+#endif
761+
762+ return 0;
763+}
764+
765+//! @brief ミッションファイル(.txt)を読みこむ
766+//! @param fname ファイル名
767+//! @return 成功:0 失敗:1
768+int MIFInterface::LoadDefaultTextFiledata(char *fname)
769+{
770+ FILE *fp;
771+ char str[64];
772+
717773 //ファイルを開く
718774 fp = fopen( fname, "r" );
719- if( fp == NULL ){
720- //briefing data open failed
721- return 1;
775+ if( fp != NULL ){
776+ //画像Aを取得
777+ fgets(str, 64, fp);
778+ DeleteLinefeed(str);
779+ if( strcmp(str, "!") == 0 ){
780+ strcpy(picturefileA_path, "!");
781+ }
782+ else{
783+ //「data\\briefing\\ 〜 .bmp」を生成
784+ strcpy(picturefileA_path, "data\\briefing\\");
785+ strcat(picturefileA_path, str);
786+ strcat(picturefileA_path, ".bmp");
787+ }
788+
789+ //画像Bを取得
790+ fgets(str, 64, fp);
791+ DeleteLinefeed(str);
792+ if( strcmp(str, "!") == 0 ){
793+ strcpy(picturefileB_path, "!");
794+ }
795+ else{
796+ //「data\\briefing\\ 〜 .bmp」を生成
797+ strcpy(picturefileB_path, "data\\briefing\\");
798+ strcat(picturefileB_path, str);
799+ strcat(picturefileB_path, ".bmp");
800+ }
801+
802+ //背景空の番号
803+ fgets(str, 16, fp);
804+ DeleteLinefeed(str);
805+ skynumber = atoi(str);
806+
807+ //ブリーフィングテキストを取得
808+ strcpy(briefingtext, "");
809+ for(int i=0; i<17; i++ ){
810+ if( fgets(str, 50, fp) == NULL ){ break; }
811+ strcat(briefingtext, str);
812+ datas += 1;
813+ }
814+
815+ //取得できない値の初期化
816+ strcpy(mission_name, "");
817+ strcpy(mission_fullname, "");
818+ strcpy(blockfile_path, "");
819+ strcpy(pointfile_path, "");
820+ strcpy(addsmallobject_path, "");
821+ collision = false;
822+ screen = false;
823+
824+ return 0;
722825 }
723826
724- if( mif == true ){
827+ return 1;
828+}
829+
830+//! @brief ミッションファイル(.mif)を読みこむ
831+//! @param fname ファイル名
832+//! @return 成功:0 失敗:1
833+int MIFInterface::LoadMissionInfoFiledata(char *fname)
834+{
835+ FILE *fp;
836+ char str[64];
837+
838+ //ファイルを開く
839+ fp = fopen( fname, "r" );
840+ if( fp != NULL ){
725841 //ミッション識別名
726842 fgets(mission_name, 24, fp);
727843 DeleteLinefeed(mission_name);
@@ -774,134 +890,92 @@
774890 //画像Bを取得
775891 fgets(picturefileB_path, _MAX_PATH, fp);
776892 DeleteLinefeed(picturefileB_path);
777- }
778- else{
779- //画像Aを取得
780- fgets(str, 64, fp);
781- DeleteLinefeed(str);
782- if( strcmp(str, "!") == 0 ){
783- strcpy(picturefileA_path, "!");
784- }
785- else{
786- //「data\\briefing\\ 〜 .bmp」を生成
787- strcpy(picturefileA_path, "data\\briefing\\");
788- strcat(picturefileA_path, str);
789- strcat(picturefileA_path, ".bmp");
790- }
791893
792- //画像Bを取得
793- fgets(str, 64, fp);
794- DeleteLinefeed(str);
795- if( strcmp(str, "!") == 0 ){
796- strcpy(picturefileB_path, "!");
894+ //ブリーフィングテキストを取得
895+ strcpy(briefingtext, "");
896+ for(int i=0; i<17; i++ ){
897+ if( fgets(str, 50, fp) == NULL ){ break; }
898+ strcat(briefingtext, str);
899+ datas += 1;
797900 }
798- else{
799- //「data\\briefing\\ 〜 .bmp」を生成
800- strcpy(picturefileB_path, "data\\briefing\\");
801- strcat(picturefileB_path, str);
802- strcat(picturefileB_path, ".bmp");
803- }
901+ return 0;
902+ }
804903
805- //背景空の番号
806- fgets(str, 16, fp);
807- DeleteLinefeed(str);
808- skynumber = atoi(str);
904+ return 1;
905+}
809906
810- //取得できない値の初期化
811- strcpy(mission_name, "");
812- strcpy(mission_fullname, "");
813- strcpy(blockfile_path, "");
814- strcpy(pointfile_path, "");
815- strcpy(addsmallobject_path, "");
816- collision = false;
817- screen = false;
818- }
907+//! @brief 追加小物情報ファイルを読みこむ
908+//! @param fname ファイル名
909+//! @return 成功:0 失敗:1
910+int MIFInterface::LoadAddSmallObjectFiledata(char *fname)
911+{
912+ FILE *fp;
913+ char str[64];
819914
820- //ブリーフィングテキストを取得
821- strcpy(briefingtext, "");
822- for(int i=0; i<17; i++ ){
823- if( fgets(str, 50, fp) == NULL ){ break; }
824- strcat(briefingtext, str);
825- datas += 1;
826- }
915+#ifdef ENABLE_PATH_DELIMITER_SLASH
916+ //パス区切り文字を変換
917+ fname = ChangePathDelimiter(fname);
918+#endif
827919
828- //ファイルハンドルを開放
829- fclose( fp );
830-
831920 #ifdef ENABLE_DEBUGLOG
832921 //ログに出力
833- OutputLog.WriteLog(LOG_COMPLETE, "", "");
922+ OutputLog.WriteLog(LOG_LOAD, "(追加小物)", fname);
834923 #endif
835924
925+ //ファイルを開く
926+ fp = fopen( fname, "r" );
927+ if( fp != NULL ){
928+ //モデルデータパス
929+ fgets(addsmallobject_modelpath, _MAX_PATH, fp);
930+ DeleteLinefeed(addsmallobject_modelpath);
836931
837- //追加小物情報を初期値へ
838- strcpy(addsmallobject_modelpath, "");
839- strcpy(addsmallobject_texturepath, "");
840- addsmallobject_decide = 0;
841- addsmallobject_hp = 0;
842- strcpy(addsmallobject_soundpath, "");
843- addsmallobject_jump = 0;
932+ //テクスチャパス
933+ fgets(addsmallobject_texturepath, _MAX_PATH, fp);
934+ DeleteLinefeed(addsmallobject_texturepath);
844935
845- //何かしらの追加小物情報ファイルが指定されていれば
846- if( (strcmp(addsmallobject_path, "") != 0)&&(strcmp(addsmallobject_path, "!") != 0) ){
847-
848-#ifdef ENABLE_DEBUGLOG
849- //ログに出力
850- OutputLog.WriteLog(LOG_LOAD, "(追加小物)", addsmallobject_path);
936+ //当たり判定の大きさ
937+ fgets(str, 16, fp);
938+ DeleteLinefeed(str);
939+ addsmallobject_decide = atoi(str);
940+#ifdef ENABLE_ADDOBJ_PARAM8BIT
941+ addsmallobject_decide = addsmallobject_decide & 0x0000007F;
851942 #endif
852943
853-#ifdef ENABLE_PATH_DELIMITER_SLASH
854- //パス区切り文字を変換
855- strcpy(addsmallobject_path, ChangePathDelimiter(addsmallobject_path));
944+ //耐久力
945+ fgets(str, 16, fp);
946+ DeleteLinefeed(str);
947+ addsmallobject_hp = atoi(str);
948+#ifdef ENABLE_ADDOBJ_PARAM8BIT
949+ addsmallobject_hp = addsmallobject_hp & 0x0000007F;
856950 #endif
857951
858- //ファイルを開く
859- fp = fopen( addsmallobject_path, "r" );
860- if( fp != NULL ){
861- //モデルデータパス
862- fgets(addsmallobject_modelpath, _MAX_PATH, fp);
863- DeleteLinefeed(addsmallobject_modelpath);
952+ //サウンドデータパス
953+ fgets(addsmallobject_soundpath, _MAX_PATH, fp);
954+ DeleteLinefeed(addsmallobject_soundpath);
864955
865- //テクスチャパス
866- fgets(addsmallobject_texturepath, _MAX_PATH, fp);
867- DeleteLinefeed(addsmallobject_texturepath);
956+ //飛び具合
957+ fgets(str, 16, fp);
958+ DeleteLinefeed(str);
959+ addsmallobject_jump = atoi(str);
960+#ifdef ENABLE_ADDOBJ_PARAM8BIT
961+ addsmallobject_jump = addsmallobject_jump & 0x000000FF;
962+#endif
868963
869- //当たり判定の大きさ
870- fgets(str, 16, fp);
871- DeleteLinefeed(str);
872- addsmallobject_decide = atoi(str);
964+ //ファイルハンドルを開放
965+ fclose( fp );
873966
874- //耐久力
875- fgets(str, 16, fp);
876- DeleteLinefeed(str);
877- addsmallobject_hp = atoi(str);
878-
879- //サウンドデータパス
880- fgets(addsmallobject_soundpath, _MAX_PATH, fp);
881- DeleteLinefeed(addsmallobject_soundpath);
882-
883- //飛び具合
884- fgets(str, 16, fp);
885- DeleteLinefeed(str);
886- addsmallobject_jump = atoi(str);
887-
888- //ファイルハンドルを開放
889- fclose( fp );
890- }
891-
892967 #ifdef ENABLE_DEBUGLOG
893968 //ログに出力
894969 OutputLog.WriteLog(LOG_COMPLETE, "", "");
895970 #endif
971+ return 0;
896972 }
973+
897974 #ifdef ENABLE_DEBUGLOG
898- else{
899- //ログに出力
900- OutputLog.WriteLog(LOG_CHECK, "(追加小物)", "ファイルなし");
901- }
975+ //ログに出力
976+ OutputLog.WriteLog(LOG_ERROR, "", "");
902977 #endif
903-
904- return 0;
978+ return 1;
905979 }
906980
907981 //! @brief 読み込んだデータファイルの形式を取得
--- trunk/datafile.h (revision 185)
+++ trunk/datafile.h (revision 186)
@@ -127,6 +127,8 @@
127127 pointdata *data; //!< ブロックデータを表す構造体
128128 char *text[MAX_POINTMESSAGES]; //!< イベントメッセージ
129129
130+ int LoadMSGFiledata(char *fname);
131+
130132 public:
131133 PointDataInterface();
132134 ~PointDataInterface();
@@ -162,6 +164,10 @@
162164 char addsmallobject_soundpath[_MAX_PATH]; //!< 追加小物のサウンドデータパス
163165 int addsmallobject_jump; //!< 追加小物の飛び具合
164166
167+ int LoadDefaultTextFiledata(char *fname);
168+ int LoadMissionInfoFiledata(char *fname);
169+ int LoadAddSmallObjectFiledata(char *fname);
170+
165171 public:
166172 MIFInterface();
167173 ~MIFInterface();
--- trunk/main.h (revision 185)
+++ trunk/main.h (revision 186)
@@ -66,8 +66,9 @@
6666
6767 #define ENABLE_BUG_HUMANWEAPON //!< 範囲外の人・武器種類番号を用いたバグを再現する(コメント化で無効)
6868 #define ENABLE_BUG_TEAMID //!< チーム番号を負数に設定した際のバグを再現する(コメント化で無効)
69-#define ENABLE_DEBUGCONSOLE //!< @brief デバック用コンソールの有効化(コメント化で機能無効)
70-#define ENABLE_DEBUGLOG //!< @brief デバック用ログ出力の有効化(コメント化で機能無効)
69+#define ENABLE_ADDOBJ_PARAM8BIT //!< 追加小物の設定値をchar型 8bitにする(コメント化で無効)
70+#define ENABLE_DEBUGCONSOLE //!< デバック用コンソールの有効化(コメント化で機能無効)
71+#define ENABLE_DEBUGLOG //!< デバック用ログ出力の有効化(コメント化で機能無効)
7172 //#define ENABLE_PATH_DELIMITER_SLASH //!< パス区切り文字を、'\'から‘/’へ変換する。
7273
7374 //windows.hを使用しないならば