• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#objective-cqt誰得cocoawindowspythonrubyphpgameguibathyscaphec翻訳omegat計画中(planning stage)frameworktwittertestdombtronvb.netdirectxarduinopreviewerゲームエンジン

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


Commit MetaInfo

Revision311 (tree)
Time2022-05-03 02:20:56
Authorxops-mikan

Log Message

追加設定ファイル(.ini)の自動生成機能追加、型のキャスト追加、helpコマンドの誤記修正

Change Summary

Incremental Difference

--- trunk/config.cpp (revision 310)
+++ trunk/config.cpp (revision 311)
@@ -396,7 +396,7 @@
396396 strcpy(out_str, PlayerName);
397397
398398 //文字数を返す
399- return strlen(PlayerName);
399+ return (int)strlen(PlayerName);
400400 }
401401
402402 //! @brief プレイヤー名設定
@@ -507,6 +507,75 @@
507507 return out;
508508 }
509509
510+//! @brief 追加設定ファイルを生成する
511+//! @param fname ファイル名
512+//! @return 成功:true 失敗/不要:false
513+bool Config::CreateExtConfig(const char *fname)
514+{
515+#ifdef ENABLE_ADDCONFIG
516+ if( fname == NULL ){ return false; }
517+
518+#ifdef ENABLE_PATH_DELIMITER_SLASH
519+ //パス区切り文字を変換
520+ fname = ChangePathDelimiter(fname);
521+#endif
522+
523+ FILE *fp;
524+
525+ //ファイルが存在するなら失敗(ファイル生成不要)
526+ fp = fopen(fname, "r");
527+ if( fp != NULL ){
528+ fclose(fp);
529+ return false;
530+ }
531+
532+#ifdef ENABLE_DEBUGLOG
533+ //ログに出力
534+ OutputLog.WriteLog(LOG_LOAD, "Config File (Create .ini)", fname);
535+#endif
536+
537+ fp = fopen(fname, "w");
538+ if( fp == NULL ){ return false; }
539+
540+ fprintf(fp, "[Game]\n");
541+ fprintf(fp, ";Show player arm and weapon.\n");
542+ fprintf(fp, "; 0: OFF (default)\n");
543+ fprintf(fp, "; 1: ON\n");
544+ fprintf(fp, "ShowArm = 0\n");
545+ fprintf(fp, "\n");
546+
547+ fprintf(fp, "[Graphics]\n");
548+ fprintf(fp, ";WindowSize\n");
549+ fprintf(fp, "; 0: 640x480 [4:3] (default)\n");
550+ fprintf(fp, "; 1: 800x600 [4:3]\n");
551+ fprintf(fp, "; 2:1024x768 [4:3]\n");
552+ fprintf(fp, "; 3:1280x960 [4:3]\n");
553+ fprintf(fp, "; 4:1600x1200 [4:3]\n");
554+ fprintf(fp, "; 10:1280x720 [16:9]\n");
555+ fprintf(fp, "; 11:1600x900 [16:9]\n");
556+ fprintf(fp, "; 12:1920x1080 [16:9]\n");
557+ //fprintf(fp, "; 13:2560x1440 [16:9]\n");
558+ //fprintf(fp, "; 14:3840x2160 [16:9]\n");
559+ fprintf(fp, "WindowSize = 0\n");
560+ fprintf(fp, "\n");
561+
562+ fprintf(fp, "[Sounds]\n");
563+ fprintf(fp, ";Game sound volume. (0.0 ~ 1.0)\n");
564+ fprintf(fp, "MasterVolume = 1.0\n");
565+ fprintf(fp, "\n");
566+
567+ fclose(fp);
568+
569+#ifdef ENABLE_DEBUGLOG
570+ //ログに出力
571+ OutputLog.WriteLog(LOG_COMPLETE, "", "");
572+#endif
573+ return true;
574+#else
575+ return false;
576+#endif
577+}
578+
510579 //! @brief 追加設定ファイルを読み込む
511580 //! @param fname ファイル名
512581 //! @return 成功:0 失敗:1
@@ -523,6 +592,11 @@
523592 OutputLog.WriteLog(LOG_LOAD, "Config File (.ini)", fname);
524593 #endif
525594
595+#ifdef ENABLE_PATH_DELIMITER_SLASH
596+ //パス区切り文字を変換
597+ fname = ChangePathDelimiter(fname);
598+#endif
599+
526600 INIConfig.LoadINIFile(fname);
527601
528602 //腕表示フラグ取得
--- trunk/config.h (revision 310)
+++ trunk/config.h (revision 311)
@@ -111,6 +111,7 @@
111111 void SetPlayerName(char *in_str);
112112 const char* GetOriginalkeycodeString(int code);
113113
114+ bool CreateExtConfig(const char *fname);
114115 int LoadExtFile(const char *fname);
115116 void SetDefaultExtConfig();
116117 bool GetShowArmFlag();
--- trunk/d3dgraphics-opengl.cpp (revision 310)
+++ trunk/d3dgraphics-opengl.cpp (revision 311)
@@ -807,7 +807,7 @@
807807 filename2[ strlen(filename) ] = '\0';
808808
809809 //拡張子でファイルフォーマットを判定
810- for(int i=strlen(filename2)-1; i>0; i--){
810+ for(int i=(int)strlen(filename2)-1; i>0; i--){
811811 if( filename2[i] == '.' ){
812812 if( strcmp(&(filename2[i]), ".bmp") == 0 ){
813813 return 1;
@@ -2412,7 +2412,7 @@
24122412 {
24132413 if( str == NULL ){ return; }
24142414
2415- int len = strlen(str);
2415+ int len = (int)strlen(str);
24162416 WCHAR *ustr;
24172417
24182418 y += 18;
@@ -2549,7 +2549,7 @@
25492549 {
25502550 if( str == NULL ){ return; }
25512551
2552- int len = strlen(str);
2552+ int len = (int)strlen(str);
25532553 WCHAR *ustr;
25542554
25552555 y += 12;
--- trunk/datafile.cpp (revision 310)
+++ trunk/datafile.cpp (revision 311)
@@ -482,7 +482,7 @@
482482 //「同ファイル名.msg」を生成
483483 strcpy(fname2, fname);
484484 //PathRemoveExtension(fname2);
485- for(int i=strlen(fname2)-1; i>0; i--){
485+ for(int i=(int)strlen(fname2)-1; i>0; i--){
486486 if( fname2[i] == '.' ){
487487 fname2[i] = '\0';
488488 break;
@@ -1070,15 +1070,15 @@
10701070
10711071 //addonフォルダ内を参照しているか判定
10721072 strcpy(str, "addon");
1073- if( memcmp(fname, str, strlen(str)) == 0 ){ index = strlen(str); }
1073+ if( memcmp(fname, str, strlen(str)) == 0 ){ index = (int)strlen(str); }
10741074 strcpy(str, "\\addon");
1075- if( memcmp(fname, str, strlen(str)) == 0 ){ index = strlen(str); }
1075+ if( memcmp(fname, str, strlen(str)) == 0 ){ index = (int)strlen(str); }
10761076 strcpy(str, "/addon");
1077- if( memcmp(fname, str, strlen(str)) == 0 ){ index = strlen(str); }
1077+ if( memcmp(fname, str, strlen(str)) == 0 ){ index = (int)strlen(str); }
10781078 strcpy(str, ".\\addon");
1079- if( memcmp(fname, str, strlen(str)) == 0 ){ index = strlen(str); }
1079+ if( memcmp(fname, str, strlen(str)) == 0 ){ index = (int)strlen(str); }
10801080 strcpy(str, "./addon");
1081- if( memcmp(fname, str, strlen(str)) == 0 ){ index = strlen(str); }
1081+ if( memcmp(fname, str, strlen(str)) == 0 ){ index = (int)strlen(str); }
10821082
10831083 //addonフォルダ内を参照しているならば
10841084 if( index != 0 ){
@@ -1585,7 +1585,7 @@
15851585 sprintf(defaultfloat, "%f", defaultvalue);
15861586 error = GetINIFileString(sectionname, keyname, defaultfloat, buf, 64);
15871587 if( errorcode != NULL ){ *errorcode = error; }
1588- for(int i=strlen(buf)-1; i>0; i--){
1588+ for(int i=(int)strlen(buf)-1; i>0; i--){
15891589 if( buf[i] == 'f' ){ buf[i] = '\0'; }
15901590 if( buf[i] == 'F' ){ buf[i] = '\0'; }
15911591 }
@@ -1690,7 +1690,7 @@
16901690 strcpy(dir, path);
16911691
16921692 //終端から'\\'か'/'を探し、'\0'に置き換える
1693- for(int i=strlen(dir)-1; i>0; i--){
1693+ for(int i=(int)strlen(dir)-1; i>0; i--){
16941694 if( dir[i] == '\\' ){ dir[i+1] = '\0'; break; }
16951695 if( dir[i] == '/' ){ dir[i+1] = '\0'; break; }
16961696 }
@@ -1725,7 +1725,7 @@
17251725 checkstr2[ strlen(checkstr) ] = '\0';
17261726
17271727 //拡張子判定
1728- for(int i=strlen(filepath2)-1; i>0; i--){
1728+ for(int i=(int)strlen(filepath2)-1; i>0; i--){
17291729 if( filepath2[i] == '.' ){
17301730 if( strcmp(&(filepath2[i]), checkstr2) == 0 ){ return true; }
17311731 return false;
--- trunk/gamemain.cpp (revision 310)
+++ trunk/gamemain.cpp (revision 311)
@@ -3510,7 +3510,7 @@
35103510 //! @brief 入力用コンソールの文字を一文字削除
35113511 void maingame::ConsoleDeleteText()
35123512 {
3513- int s = strlen(InputConsoleData->textdata);
3513+ int s = (int)strlen(InputConsoleData->textdata);
35143514 if( s == (int)strlen(CONSOLE_PROMPT) ){ return; }
35153515 InputConsoleData->textdata[ s-1 ] = '\0';
35163516 }
@@ -3532,7 +3532,7 @@
35323532 if( strlen(cmd)+2 > strlen(NewCommand) ){ return false; }
35333533
35343534 //数字が与えられているか
3535- for(int i=strlen(cmd)+1; NewCommand[i] != '\0'; i++){
3535+ for(int i=(int)strlen(cmd)+1; NewCommand[i] != '\0'; i++){
35363536 if( ((NewCommand[i] < '0')||('9' < NewCommand[i]))&&(NewCommand[i] != '+')&&(NewCommand[i] != '-') ){ return false; }
35373537 }
35383538
@@ -3602,7 +3602,7 @@
36023602 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "info view center map model aiinfo <NUM>");
36033603 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "tag radar inmap sky <NUM> dark fog");
36043604 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "player <NUM> revive kill <NUM> treat <NUM> nodamage <NUM>");
3605- AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "newobj <NUM> break <NUM> delhuman <NUM> delweapon <NUM> delobj <NUL>");
3605+ AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "newobj <NUM> break <NUM> delhuman <NUM> delweapon <NUM> delobj <NUM>");
36063606 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "nofight caution ailevel <NUM> ff bot stop estop");
36073607 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "speed window ss clear ver exit");
36083608 }
--- trunk/main.cpp (revision 310)
+++ trunk/main.cpp (revision 311)
@@ -177,6 +177,7 @@
177177
178178 //追加設定を読み込む
179179 #ifdef ENABLE_ADDCONFIG
180+ GameConfig.CreateExtConfig("config-openxops.ini");
180181 GameConfig.LoadExtFile("config-openxops.ini");
181182 #else
182183 GameConfig.LoadExtFile(NULL);
@@ -277,7 +278,7 @@
277278 str[0] = '-';
278279 if( strcmp(param, str) == 0 ){ return true; }
279280
280- for(int i=0; i<strlen(str); i++){ str[i] = (char)tolower((int)(str[i])); }
281+ for(int i=0; i<(int)strlen(str); i++){ str[i] = (char)tolower((int)(str[i])); }
281282
282283 str[0] = '/';
283284 if( strcmp(param, str) == 0 ){ return true; }
--- trunk/window.cpp (revision 310)
+++ trunk/window.cpp (revision 311)
@@ -382,7 +382,7 @@
382382 static char newstr[MAX_PATH];
383383 strcpy(newstr, str);
384384
385- for(int i=0; i<strlen(newstr); i++){
385+ for(int i=0; i<(int)strlen(newstr); i++){
386386 if( newstr[i] == '\\' ){
387387 newstr[i] = '/';
388388 }