X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
修訂 | 91 (tree) |
---|---|
時間 | 2015-06-07 21:24:17 |
作者 | xops-mikan |
デバック用の実行ログを記録・保存する機能追加。 ※exeのコマンド引数に"log"を付けて起動することで、同ディレクトリにOpenXOPS_log.htmlとして出力します。
@@ -0,0 +1,69 @@ | ||
1 | +//! @file debug.h | |
2 | +//! @brief DebugLogクラスの宣言 | |
3 | + | |
4 | +//-------------------------------------------------------------------------------- | |
5 | +// | |
6 | +// OpenXOPS | |
7 | +// Copyright (c) 2014-2015, OpenXOPS Project / [-_-;](mikan) All rights reserved. | |
8 | +// | |
9 | +// Redistribution and use in source and binary forms, with or without | |
10 | +// modification, are permitted provided that the following conditions are met: | |
11 | +// * Redistributions of source code must retain the above copyright notice, | |
12 | +// this list of conditions and the following disclaimer. | |
13 | +// * Redistributions in binary form must reproduce the above copyright notice, | |
14 | +// this list of conditions and the following disclaimer in the documentation | |
15 | +// and/or other materials provided with the distribution. | |
16 | +// * Neither the name of the OpenXOPS Project nor the names of its contributors | |
17 | +// may be used to endorse or promote products derived from this software | |
18 | +// without specific prior written permission. | |
19 | +// | |
20 | +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |
21 | +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
22 | +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
23 | +// DISCLAIMED. IN NO EVENT SHALL OpenXOPS Project BE LIABLE FOR ANY | |
24 | +// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
25 | +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
26 | +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |
27 | +// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
28 | +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
29 | +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
30 | +//-------------------------------------------------------------------------------- | |
31 | + | |
32 | +#ifndef DEBUG_H | |
33 | +#define DEBUG_H | |
34 | + | |
35 | +#ifndef H_LAYERLEVEL | |
36 | + #define H_LAYERLEVEL 1 //!< Select include file. | |
37 | +#endif | |
38 | +#include "main.h" | |
39 | + | |
40 | +#ifdef ENABLE_DEBUGLOG | |
41 | +//! @brief デバック情報を出力するクラス | |
42 | +//! @details デバック情報をファイルに出力します。 | |
43 | +class DebugLog | |
44 | +{ | |
45 | + bool OutputFlag; //!< 出力有効 | |
46 | + char fname[MAX_PATH]; //!< ファイル名 | |
47 | + bool error; //!< エラーフラグ(次回エラーを記録する) | |
48 | + | |
49 | +public: | |
50 | + DebugLog(); | |
51 | + ~DebugLog(); | |
52 | + void SetLogName(char* name); | |
53 | + bool MakeLog(); | |
54 | + bool WriteLog(int tag, char* title, int id); | |
55 | + bool WriteLog(int tag, char* title, char* text); | |
56 | +}; | |
57 | + | |
58 | +//! ログの出力モードを表す定数 | |
59 | +enum LogTag { | |
60 | + LOG_CHECK, | |
61 | + LOG_INIT, | |
62 | + LOG_LOAD, | |
63 | + LOG_CLEANUP, | |
64 | + LOG_COMPLETE, | |
65 | + LOG_ERROR | |
66 | +}; | |
67 | +#endif //ENABLE_DEBUGLOG | |
68 | + | |
69 | +#endif | |
\ No newline at end of file |
@@ -132,6 +132,29 @@ | ||
132 | 132 | default: |
133 | 133 | NowState = STATE_NULL; |
134 | 134 | } |
135 | + | |
136 | +#ifdef ENABLE_DEBUGLOG | |
137 | + //ログに出力 | |
138 | + switch(NowState){ | |
139 | + case STATE_CREATE_OPENING: | |
140 | + OutputLog.WriteLog(LOG_CHECK, "画面遷移", "オープニング"); | |
141 | + break; | |
142 | + case STATE_CREATE_MENU: | |
143 | + OutputLog.WriteLog(LOG_CHECK, "画面遷移", "メニュー"); | |
144 | + break; | |
145 | + case STATE_CREATE_BRIEFING: | |
146 | + OutputLog.WriteLog(LOG_CHECK, "画面遷移", "ブリーフィング"); | |
147 | + break; | |
148 | + case STATE_CREATE_MAINGAME: | |
149 | + OutputLog.WriteLog(LOG_CHECK, "画面遷移", "ミッション"); | |
150 | + break; | |
151 | + case STATE_CREATE_RESULT: | |
152 | + OutputLog.WriteLog(LOG_CHECK, "画面遷移", "リザルト"); | |
153 | + break; | |
154 | + default: | |
155 | + ;// | |
156 | + } | |
157 | +#endif | |
135 | 158 | } |
136 | 159 | |
137 | 160 | //! @brief マウスクリック を受けた |
@@ -61,6 +61,11 @@ | ||
61 | 61 | FILE *fp; |
62 | 62 | char buf; |
63 | 63 | |
64 | +#ifdef ENABLE_DEBUGLOG | |
65 | + //ログに出力 | |
66 | + OutputLog.WriteLog(LOG_LOAD, "設定ファイル", fname); | |
67 | +#endif | |
68 | + | |
64 | 69 | #ifdef PATH_DELIMITER_SLASH |
65 | 70 | //パス区切り文字を変換 |
66 | 71 | fname = ChangePathDelimiter(fname); |
@@ -121,6 +126,11 @@ | ||
121 | 126 | |
122 | 127 | //ファイルハンドルを閉じる |
123 | 128 | fclose(fp); |
129 | + | |
130 | +#ifdef ENABLE_DEBUGLOG | |
131 | + //ログに出力 | |
132 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
133 | +#endif | |
124 | 134 | return 0; |
125 | 135 | } |
126 | 136 |
@@ -82,6 +82,11 @@ | ||
82 | 82 | { |
83 | 83 | //blockdata構造体解放 |
84 | 84 | if( data != NULL ) delete [] data; |
85 | + | |
86 | +#ifdef ENABLE_DEBUGLOG | |
87 | + //ログに出力 | |
88 | + OutputLog.WriteLog(LOG_CLEANUP, "BD1", ""); | |
89 | +#endif | |
85 | 90 | } |
86 | 91 | |
87 | 92 | //! @brief ブロックデータファイルを読みこむ |
@@ -94,6 +99,11 @@ | ||
94 | 99 | float bdata_main[80]; |
95 | 100 | char bdata_mainb[30]; |
96 | 101 | |
102 | +#ifdef ENABLE_DEBUGLOG | |
103 | + //ログに出力 | |
104 | + OutputLog.WriteLog(LOG_LOAD, "BD1", fname); | |
105 | +#endif | |
106 | + | |
97 | 107 | #ifdef PATH_DELIMITER_SLASH |
98 | 108 | //パス区切り文字を変換 |
99 | 109 | fname = ChangePathDelimiter(fname); |
@@ -150,6 +160,11 @@ | ||
150 | 160 | //ファイルハンドルを解放 |
151 | 161 | fclose( fp ); |
152 | 162 | |
163 | +#ifdef ENABLE_DEBUGLOG | |
164 | + //ログに出力 | |
165 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
166 | +#endif | |
167 | + | |
153 | 168 | return 0; |
154 | 169 | } |
155 | 170 |
@@ -348,6 +363,11 @@ | ||
348 | 363 | for(int i=0; i<MAX_POINTMESSAGES; i++){ |
349 | 364 | if( text[i] != NULL ) delete [] text[i]; |
350 | 365 | } |
366 | + | |
367 | +#ifdef ENABLE_DEBUGLOG | |
368 | + //ログに出力 | |
369 | + OutputLog.WriteLog(LOG_CLEANUP, "PD1", ""); | |
370 | +#endif | |
351 | 371 | } |
352 | 372 | |
353 | 373 | //! @brief ポイントデータファイルを読みこむ |
@@ -361,6 +381,11 @@ | ||
361 | 381 | char pdata_mainc[200][4]; |
362 | 382 | char fname2[MAX_PATH]; |
363 | 383 | |
384 | +#ifdef ENABLE_DEBUGLOG | |
385 | + //ログに出力 | |
386 | + OutputLog.WriteLog(LOG_LOAD, "PD1", fname); | |
387 | +#endif | |
388 | + | |
364 | 389 | #ifdef PATH_DELIMITER_SLASH |
365 | 390 | //パス区切り文字を変換 |
366 | 391 | fname = ChangePathDelimiter(fname); |
@@ -402,6 +427,11 @@ | ||
402 | 427 | //ファイルポインタを閉じる |
403 | 428 | fclose( fp ); |
404 | 429 | |
430 | +#ifdef ENABLE_DEBUGLOG | |
431 | + //ログに出力 | |
432 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
433 | +#endif | |
434 | + | |
405 | 435 | //「同ファイル名.msg」を生成 |
406 | 436 | strcpy(fname2, fname); |
407 | 437 | //PathRemoveExtension(fname2); |
@@ -421,6 +451,11 @@ | ||
421 | 451 | //ファイルを読み込み |
422 | 452 | fp = fopen( fname2, "r" ); |
423 | 453 | if( fp != NULL ){ |
454 | +#ifdef ENABLE_DEBUGLOG | |
455 | + //ログに出力 | |
456 | + OutputLog.WriteLog(LOG_LOAD, "MSG", fname2); | |
457 | +#endif | |
458 | + | |
424 | 459 | //メッセージデータを取得 |
425 | 460 | for(int i=0; i<MAX_POINTMESSAGES; i++){ |
426 | 461 | if( fgets(text[i], MAX_POINTMESSAGEBYTE, fp) == NULL ){ break; } |
@@ -431,9 +466,20 @@ | ||
431 | 466 | } |
432 | 467 | } |
433 | 468 | |
469 | +#ifdef ENABLE_DEBUGLOG | |
470 | + //ログに出力 | |
471 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
472 | +#endif | |
473 | + | |
434 | 474 | //ファイルポインタを開放 |
435 | 475 | fclose( fp ); |
436 | 476 | } |
477 | + else{ | |
478 | +#ifdef ENABLE_DEBUGLOG | |
479 | + //ログに出力 | |
480 | + OutputLog.WriteLog(LOG_CHECK, "MSG", "ファイルなし"); | |
481 | +#endif | |
482 | + } | |
437 | 483 | |
438 | 484 | return 0; |
439 | 485 | } |
@@ -601,6 +647,11 @@ | ||
601 | 647 | { |
602 | 648 | char str[64]; |
603 | 649 | |
650 | +#ifdef ENABLE_DEBUGLOG | |
651 | + //ログに出力 | |
652 | + OutputLog.WriteLog(LOG_LOAD, "MIF", fname); | |
653 | +#endif | |
654 | + | |
604 | 655 | mif = true; |
605 | 656 | |
606 | 657 | //拡張子が.txtならば |
@@ -739,7 +790,12 @@ | ||
739 | 790 | //ファイルハンドルを開放 |
740 | 791 | fclose( fp ); |
741 | 792 | |
793 | +#ifdef ENABLE_DEBUGLOG | |
794 | + //ログに出力 | |
795 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
796 | +#endif | |
742 | 797 | |
798 | + | |
743 | 799 | //追加小物情報を初期値へ |
744 | 800 | strcpy(addsmallobject_modelpath, ""); |
745 | 801 | strcpy(addsmallobject_texturepath, ""); |
@@ -751,6 +807,11 @@ | ||
751 | 807 | //何かしらの追加小物情報ファイルが指定されていれば |
752 | 808 | if( (strcmp(addsmallobject_path, "") != 0)&&(strcmp(addsmallobject_path, "!") != 0) ){ |
753 | 809 | |
810 | +#ifdef ENABLE_DEBUGLOG | |
811 | + //ログに出力 | |
812 | + OutputLog.WriteLog(LOG_LOAD, "(追加小物)", addsmallobject_path); | |
813 | +#endif | |
814 | + | |
754 | 815 | #ifdef PATH_DELIMITER_SLASH |
755 | 816 | //パス区切り文字を変換 |
756 | 817 | strcpy(addsmallobject_path, ChangePathDelimiter(addsmallobject_path)); |
@@ -789,7 +850,18 @@ | ||
789 | 850 | //ファイルハンドルを開放 |
790 | 851 | fclose( fp ); |
791 | 852 | } |
853 | + | |
854 | +#ifdef ENABLE_DEBUGLOG | |
855 | + //ログに出力 | |
856 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
857 | +#endif | |
792 | 858 | } |
859 | +#ifdef ENABLE_DEBUGLOG | |
860 | + else{ | |
861 | + //ログに出力 | |
862 | + OutputLog.WriteLog(LOG_CHECK, "(追加小物)", "ファイルなし"); | |
863 | + } | |
864 | +#endif | |
793 | 865 | |
794 | 866 | return 0; |
795 | 867 | } |
@@ -1022,6 +1094,14 @@ | ||
1022 | 1094 | //ミッション名をソートする |
1023 | 1095 | Sort(); |
1024 | 1096 | |
1097 | +#ifdef ENABLE_DEBUGLOG | |
1098 | + char str[128]; | |
1099 | + sprintf(str, "addonフォルダ調査(ディレクトリ:%s 合計数:%d)", dir, datas); | |
1100 | + | |
1101 | + //ログに出力 | |
1102 | + OutputLog.WriteLog(LOG_CHECK, "ディレクトリ", str); | |
1103 | +#endif | |
1104 | + | |
1025 | 1105 | return datas; |
1026 | 1106 | } |
1027 | 1107 |
@@ -62,6 +62,11 @@ | ||
62 | 62 | if( Weapon != NULL ){ delete [] Weapon; } |
63 | 63 | if( SmallObject != NULL ){ delete [] SmallObject; } |
64 | 64 | if( AIlevel != NULL ){ delete [] AIlevel; } |
65 | + | |
66 | +#ifdef ENABLE_DEBUGLOG | |
67 | + //ログに出力 | |
68 | + OutputLog.WriteLog(LOG_CLEANUP, "設定値", ""); | |
69 | +#endif | |
65 | 70 | } |
66 | 71 | |
67 | 72 | //! @brief 初期化(パラメータの設定) |
@@ -68,6 +73,11 @@ | ||
68 | 73 | //! @attention この関数を呼び出さないと、クラス自体が正しく機能しません。 |
69 | 74 | void ParameterInfo::InitInfo() |
70 | 75 | { |
76 | +#ifdef ENABLE_DEBUGLOG | |
77 | + //ログに出力 | |
78 | + OutputLog.WriteLog(LOG_INIT, "設定値", ""); | |
79 | +#endif | |
80 | + | |
71 | 81 | Human = new HumanParameter[TOTAL_PARAMETERINFO_HUMAN]; |
72 | 82 | Weapon = new WeaponParameter[TOTAL_PARAMETERINFO_WEAPON]; |
73 | 83 | SmallObject = new SmallObjectParameter[TOTAL_PARAMETERINFO_SMALLOBJECT]; |
@@ -1532,6 +1542,11 @@ | ||
1532 | 1542 | AIlevel[5].attack = 10; |
1533 | 1543 | AIlevel[5].search = 6; |
1534 | 1544 | AIlevel[5].limitserror = -3; |
1545 | + | |
1546 | +#ifdef ENABLE_DEBUGLOG | |
1547 | + //ログに出力 | |
1548 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
1549 | +#endif | |
1535 | 1550 | } |
1536 | 1551 | |
1537 | 1552 | //! @brief 人の設定を取得 |
@@ -0,0 +1,214 @@ | ||
1 | +//! @file debug.cpp | |
2 | +//! @brief DebugLogクラスの定義 | |
3 | + | |
4 | +//-------------------------------------------------------------------------------- | |
5 | +// | |
6 | +// OpenXOPS | |
7 | +// Copyright (c) 2014-2015, OpenXOPS Project / [-_-;](mikan) All rights reserved. | |
8 | +// | |
9 | +// Redistribution and use in source and binary forms, with or without | |
10 | +// modification, are permitted provided that the following conditions are met: | |
11 | +// * Redistributions of source code must retain the above copyright notice, | |
12 | +// this list of conditions and the following disclaimer. | |
13 | +// * Redistributions in binary form must reproduce the above copyright notice, | |
14 | +// this list of conditions and the following disclaimer in the documentation | |
15 | +// and/or other materials provided with the distribution. | |
16 | +// * Neither the name of the OpenXOPS Project nor the names of its contributors | |
17 | +// may be used to endorse or promote products derived from this software | |
18 | +// without specific prior written permission. | |
19 | +// | |
20 | +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |
21 | +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
22 | +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
23 | +// DISCLAIMED. IN NO EVENT SHALL OpenXOPS Project BE LIABLE FOR ANY | |
24 | +// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
25 | +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
26 | +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |
27 | +// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
28 | +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
29 | +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
30 | +//-------------------------------------------------------------------------------- | |
31 | + | |
32 | +#include "debug.h" | |
33 | + | |
34 | +#ifdef ENABLE_DEBUGLOG | |
35 | + | |
36 | +//! @brief コンストラクタ | |
37 | +DebugLog::DebugLog() | |
38 | +{ | |
39 | + OutputFlag = false; | |
40 | + strcpy(fname, GAMENAME"_log.html"); | |
41 | + error = false; | |
42 | +} | |
43 | + | |
44 | +//! @brief ディストラクタ | |
45 | +DebugLog::~DebugLog() | |
46 | +{} | |
47 | + | |
48 | +//! @brief ログファイルのファイル名を変更 | |
49 | +//! @param name ファイル名 | |
50 | +void DebugLog::SetLogName(char* name) | |
51 | +{ | |
52 | + strcpy(fname, name); | |
53 | +} | |
54 | + | |
55 | +//! @brief ログファイルを新規作成 | |
56 | +//! @return 成功:false 失敗:true | |
57 | +//! @warning この関数を正しく実行しないと、クラス自体が動作しません。 | |
58 | +//! @attention 既にファイルが存在する場合、上書き保存されます。既存のファイルは失われます。 | |
59 | +bool DebugLog::MakeLog() | |
60 | +{ | |
61 | + FILE *fp; | |
62 | + | |
63 | + time_t timer; | |
64 | + struct tm *local; | |
65 | + | |
66 | + //日時を取得 | |
67 | + timer = time(NULL); | |
68 | + local = localtime(&timer); | |
69 | + | |
70 | + | |
71 | + fp = fopen(fname, "w"); | |
72 | + if( fp == NULL ){ | |
73 | + return true; | |
74 | + } | |
75 | + | |
76 | + //ヘッダー | |
77 | + fprintf(fp, "<html>\n"); | |
78 | + fprintf(fp, "<head>\n"); | |
79 | + fprintf(fp, "<title>"GAMENAME" "GAMEVERSION" Debug Log</title>\n"); | |
80 | + fprintf(fp, "<style type=text/css>\n"); | |
81 | + fprintf(fp, "<!--//\n"); | |
82 | + fprintf(fp, "body{ font-size : 12px; }\n"); | |
83 | + fprintf(fp, "table { font-size : 12px; }\n"); | |
84 | + fprintf(fp, "//-->\n"); | |
85 | + fprintf(fp, "</style>\n"); | |
86 | + fprintf(fp, "</head>\n"); | |
87 | + | |
88 | + fprintf(fp, "<body>\n"); | |
89 | + | |
90 | + //ページ上部 | |
91 | + fprintf(fp, "<p>\n"); | |
92 | + fprintf(fp, "<b>"GAMENAME" "GAMEVERSION" 実行ログ</b><br>\n"); | |
93 | + fprintf(fp, "日時:%04d年%02d月%02d日 %02d時%02d分%02d秒<br>\n", local->tm_year + 1900, local->tm_mon + 1, local->tm_mday, local->tm_hour, local->tm_min, local->tm_sec); | |
94 | + fprintf(fp, "</p>\n"); | |
95 | + | |
96 | + fprintf(fp, "<table>\n"); | |
97 | + | |
98 | + fclose(fp); | |
99 | + | |
100 | + //出力フラグを有効 | |
101 | + OutputFlag = true; | |
102 | + | |
103 | + return false; | |
104 | +} | |
105 | + | |
106 | +//! @brief ログファイルに追記 | |
107 | +//! @param tag 出力モードを表す定数 | |
108 | +//! @param title タイトル | |
109 | +//! @param id ID | |
110 | +//! @return 成功:false 失敗:true | |
111 | +//! @attention WriteLog(int tag, char* title, char* text)関数をオーバーロードします。 | |
112 | +bool DebugLog::WriteLog(int tag, char* title, int id) | |
113 | +{ | |
114 | + //出力フラグを有効なければ処理しない | |
115 | + if( OutputFlag == false ){ return true; } | |
116 | + | |
117 | + char str[16]; | |
118 | + sprintf(str, "ID:%d", id); | |
119 | + | |
120 | + //オーバーロード | |
121 | + return WriteLog(tag, title, str); | |
122 | +} | |
123 | + | |
124 | +//! @brief ログファイルに追記 | |
125 | +//! @param tag 出力モードを表す定数 | |
126 | +//! @param title タイトル | |
127 | +//! @param text 本文 | |
128 | +//! @return 成功:false 失敗:true | |
129 | +//! @attention 前回、初期化(LOG_INIT)か読み込み(LOG_LOAD)が指定された状態で、完了(LOG_COMPLETE)が指定されなかった場合、先にエラー(LOG_ERROR)情報を記憶します。 | |
130 | +//! @attention すなわち、初期化か読み込みを記録した場合、次に完了が記録されなければ、自動的にエラーとして記録します。 | |
131 | +bool DebugLog::WriteLog(int tag, char* title, char* text) | |
132 | +{ | |
133 | + //出力フラグを有効なければ処理しない | |
134 | + if( OutputFlag == false ){ return true; } | |
135 | + | |
136 | + FILE *fp; | |
137 | + | |
138 | + char tagcolor[32]; | |
139 | + char tagstr[32]; | |
140 | + | |
141 | + //完了情報か素直にエラーを伝えてきたなら、エラーフラグを下す | |
142 | + if( (tag == LOG_COMPLETE)||(tag == LOG_ERROR) ){ | |
143 | + error = false; | |
144 | + } | |
145 | + | |
146 | + //エラーフラグが有効ならば、エラーが発生したものとして記録。 | |
147 | + if( error == true ){ | |
148 | + error = false; | |
149 | + WriteLog(LOG_ERROR, "", ""); | |
150 | + } | |
151 | + | |
152 | + //定数から文字と色を求める | |
153 | + switch(tag){ | |
154 | + case LOG_CHECK: | |
155 | + strcpy(tagcolor, "008000"); | |
156 | + strcpy(tagstr, "情報"); | |
157 | + break; | |
158 | + case LOG_INIT: | |
159 | + strcpy(tagcolor, "FF0080"); | |
160 | + strcpy(tagstr, "初期化"); | |
161 | + break; | |
162 | + case LOG_LOAD: | |
163 | + strcpy(tagcolor, "0000FF"); | |
164 | + strcpy(tagstr, "読み込み"); | |
165 | + break; | |
166 | + case LOG_CLEANUP: | |
167 | + strcpy(tagcolor, "FF8000"); | |
168 | + strcpy(tagstr, "解放"); | |
169 | + break; | |
170 | + case LOG_COMPLETE: | |
171 | + strcpy(tagcolor, "008000"); | |
172 | + strcpy(tagstr, "成功"); | |
173 | + break; | |
174 | + case LOG_ERROR: | |
175 | + strcpy(tagcolor, "FF0000"); | |
176 | + strcpy(tagstr, "失敗"); | |
177 | + break; | |
178 | + default: | |
179 | + strcpy(tagcolor, "000000"); | |
180 | + strcpy(tagstr, ""); | |
181 | + } | |
182 | + | |
183 | + fp = fopen(fname, "a"); | |
184 | + if( fp == NULL ){ | |
185 | + return true; | |
186 | + } | |
187 | + | |
188 | + //現在のミリ秒 | |
189 | + fprintf(fp, "<tr><td> %d </tb>", GetTimeMS()); | |
190 | + | |
191 | + if( (tag != LOG_COMPLETE)&&(tag != LOG_ERROR) ){ | |
192 | + //通常の情報 | |
193 | + fprintf(fp, "<td width=100><b><font color=#%s>%s</font></b></tb>", tagcolor, tagstr); | |
194 | + fprintf(fp, "<td width=100>%s</tb><td colspan=3>%s</tb>", title, text); | |
195 | + } | |
196 | + else{ | |
197 | + //完了・エラー情報 | |
198 | + fprintf(fp, "<td colspan=2></td><td width=100><b><font color=#%s>%s</font></b></tb>", tagcolor, tagstr); | |
199 | + fprintf(fp, "<td>%s</tb><td>%s</tb>", title, text); | |
200 | + } | |
201 | + | |
202 | + fprintf(fp, "</tr>\n"); | |
203 | + | |
204 | + fclose(fp); | |
205 | + | |
206 | + //初期化か読み込みなら、エラーフラグを立てる | |
207 | + if( (tag == LOG_INIT)||(tag == LOG_LOAD) ){ | |
208 | + error = true; | |
209 | + } | |
210 | + | |
211 | + return false; | |
212 | +} | |
213 | + | |
214 | +#endif //ENABLE_DEBUGLOG | |
\ No newline at end of file |
@@ -48,6 +48,11 @@ | ||
48 | 48 | } |
49 | 49 | } |
50 | 50 | if( pDSound != NULL ){ pDSound->Release(); } |
51 | + | |
52 | +#ifdef ENABLE_DEBUGLOG | |
53 | + //ログに出力 | |
54 | + OutputLog.WriteLog(LOG_CLEANUP, "サウンド", "ezds.dll"); | |
55 | +#endif | |
51 | 56 | } |
52 | 57 | |
53 | 58 | //! @brief 初期化 |
@@ -55,6 +60,11 @@ | ||
55 | 60 | //! @return 成功:0 失敗:1 |
56 | 61 | int SoundControl::InitSound(WindowControl *WindowCtrl) |
57 | 62 | { |
63 | +#ifdef ENABLE_DEBUGLOG | |
64 | + //ログに出力 | |
65 | + OutputLog.WriteLog(LOG_INIT, "サウンド", "DirectSound"); | |
66 | +#endif | |
67 | + | |
58 | 68 | //DirectSoundオブジェクトを生成 |
59 | 69 | if( FAILED( DirectSoundCreate8(NULL, &pDSound, NULL) ) ){ |
60 | 70 | return 1; |
@@ -82,6 +92,11 @@ | ||
82 | 92 | //ロール・オフ(減衰度合い)設定 |
83 | 93 | p3DListener->SetRolloffFactor(0.05f, DS3D_IMMEDIATE); |
84 | 94 | |
95 | +#ifdef ENABLE_DEBUGLOG | |
96 | + //ログに出力 | |
97 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
98 | +#endif | |
99 | + | |
85 | 100 | return 0; |
86 | 101 | } |
87 | 102 |
@@ -112,6 +127,11 @@ | ||
112 | 127 | { |
113 | 128 | if( pDSound == NULL ){ return -1; } |
114 | 129 | |
130 | +#ifdef ENABLE_DEBUGLOG | |
131 | + //ログに出力 | |
132 | + OutputLog.WriteLog(LOG_LOAD, "サウンド", filename); | |
133 | +#endif | |
134 | + | |
115 | 135 | //開いている番号を探す |
116 | 136 | int id=0; |
117 | 137 | for(id=0; id<MAX_LOADSOUND; id++){ |
@@ -226,6 +246,11 @@ | ||
226 | 246 | pDSBuffer[id][0]->SetVolume(DSBVOLUME_MIN); |
227 | 247 | pDSBuffer[id][0]->Play(NULL, 0, NULL); |
228 | 248 | |
249 | +#ifdef ENABLE_DEBUGLOG | |
250 | + //ログに出力 | |
251 | + OutputLog.WriteLog(LOG_COMPLETE, "", id); | |
252 | +#endif | |
253 | + | |
229 | 254 | return id; |
230 | 255 | } |
231 | 256 |
@@ -331,6 +356,11 @@ | ||
331 | 356 | if( pDSBuffer[id][i] != NULL ){ pDSBuffer[id][i]->Release(); } |
332 | 357 | pDSBuffer[id][i] = NULL; |
333 | 358 | } |
359 | + | |
360 | +#ifdef ENABLE_DEBUGLOG | |
361 | + //ログに出力 | |
362 | + OutputLog.WriteLog(LOG_CLEANUP, "サウンド", id); | |
363 | +#endif | |
334 | 364 | } |
335 | 365 | |
336 | 366 | //! @brief Waveファイルの情報を調べる |
@@ -450,6 +480,11 @@ | ||
450 | 480 | |
451 | 481 | //DLLを開放 |
452 | 482 | FreeLibrary(lib); |
483 | + | |
484 | +#ifdef ENABLE_DEBUGLOG | |
485 | + //ログに出力 | |
486 | + OutputLog.WriteLog(LOG_CLEANUP, "サウンド", "ezds.dll"); | |
487 | +#endif | |
453 | 488 | } |
454 | 489 | |
455 | 490 | //! @brief 初期化@n |
@@ -458,6 +493,11 @@ | ||
458 | 493 | //! @return 成功:0 失敗:1 |
459 | 494 | int SoundControl::InitSound(WindowControl *WindowCtrl) |
460 | 495 | { |
496 | +#ifdef ENABLE_DEBUGLOG | |
497 | + //ログに出力 | |
498 | + OutputLog.WriteLog(LOG_INIT, "サウンド", "ezds.dll"); | |
499 | +#endif | |
500 | + | |
461 | 501 | if( lib != NULL ){ |
462 | 502 | return 1; |
463 | 503 | } |
@@ -484,6 +524,11 @@ | ||
484 | 524 | //return 1; |
485 | 525 | } |
486 | 526 | |
527 | +#ifdef ENABLE_DEBUGLOG | |
528 | + //ログに出力 | |
529 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
530 | +#endif | |
531 | + | |
487 | 532 | return 0; |
488 | 533 | } |
489 | 534 |
@@ -515,6 +560,11 @@ | ||
515 | 560 | { |
516 | 561 | if( lib == NULL ){ return -1; } |
517 | 562 | |
563 | +#ifdef ENABLE_DEBUGLOG | |
564 | + //ログに出力 | |
565 | + OutputLog.WriteLog(LOG_LOAD, "サウンド", filename); | |
566 | +#endif | |
567 | + | |
518 | 568 | //使用していないデータ番号を探す |
519 | 569 | for(int i=0; i<MAX_LOADSOUND; i++){ |
520 | 570 | if( useflag[i] == false ){ |
@@ -529,6 +579,11 @@ | ||
529 | 579 | |
530 | 580 | //使用中を新たすフラグをセット |
531 | 581 | useflag[i] = true; |
582 | + | |
583 | +#ifdef ENABLE_DEBUGLOG | |
584 | + //ログに出力 | |
585 | + OutputLog.WriteLog(LOG_COMPLETE, "", i); | |
586 | +#endif | |
532 | 587 | return i; |
533 | 588 | } |
534 | 589 | } |
@@ -602,6 +657,11 @@ | ||
602 | 657 | |
603 | 658 | //使用中フラグを解除 |
604 | 659 | useflag[id] = false; |
660 | + | |
661 | +#ifdef ENABLE_DEBUGLOG | |
662 | + //ログに出力 | |
663 | + OutputLog.WriteLog(LOG_CLEANUP, "サウンド", id); | |
664 | +#endif | |
605 | 665 | } |
606 | 666 | |
607 | 667 | //! @brief 音源との距離を調べる |
@@ -52,7 +52,7 @@ | ||
52 | 52 | #define SCREEN_WIDTH 640 //!< スクリーンの幅 |
53 | 53 | #define SCREEN_HEIGHT 480 //!< スクリーンの高さ |
54 | 54 | |
55 | -#define MAX_ADDONLIST 128 //!< ADDONを読み込む最大数 | |
55 | +#define MAX_ADDONLIST 128 //!< ADDONを読み込む最大数 | |
56 | 56 | |
57 | 57 | #define TOTAL_HAVEWEAPON 2 //!< 持てる武器の数 |
58 | 58 |
@@ -63,6 +63,9 @@ | ||
63 | 63 | #include <math.h> |
64 | 64 | #include <string.h> |
65 | 65 | |
66 | +#define ENABLE_DEBUGLOG //!< @brief デバック用ログ出力の有効化(コメント化で機能無効) | |
67 | +//#define PATH_DELIMITER_SLASH //!< パス区切り文字を、'\'から‘/’へ変換する。 | |
68 | + | |
66 | 69 | //windows.hを使用しないならば |
67 | 70 | #ifndef _MAX_PATH |
68 | 71 | #define _MAX_PATH 260 //!< _MAX_PATH is 260 |
@@ -71,8 +74,6 @@ | ||
71 | 74 | #define MAX_PATH 260 //!< MAX_PATH is 260 |
72 | 75 | #endif |
73 | 76 | |
74 | -//#define PATH_DELIMITER_SLASH //!< パス区切り文字を、'\'から‘/’へ変換する。 | |
75 | - | |
76 | 77 | //BorlandC++ Compiler用の処理 |
77 | 78 | #ifdef __BORLANDC__ |
78 | 79 | #define sqrtf(df) sqrt(df) |
@@ -87,6 +88,7 @@ | ||
87 | 88 | |
88 | 89 | //低レイヤー |
89 | 90 | #if H_LAYERLEVEL >= 1 |
91 | + #include "debug.h" | |
90 | 92 | #include "window.h" |
91 | 93 | #include "config.h" |
92 | 94 | #include "datafile.h" |
@@ -117,6 +119,9 @@ | ||
117 | 119 | //追加ライブラリ |
118 | 120 | // not .lib |
119 | 121 | |
122 | +#ifdef ENABLE_DEBUGLOG | |
123 | + extern class DebugLog OutputLog; | |
124 | +#endif | |
120 | 125 | extern class StateMachine GameState; |
121 | 126 | extern class Config GameConfig; |
122 | 127 |
@@ -81,6 +81,11 @@ | ||
81 | 81 | |
82 | 82 | if( pd3dDevice != NULL ) pd3dDevice->Release(); |
83 | 83 | if( pD3D != NULL ) pD3D->Release(); |
84 | + | |
85 | +#ifdef ENABLE_DEBUGLOG | |
86 | + //ログに出力 | |
87 | + OutputLog.WriteLog(LOG_CLEANUP, "グラフィック", "DirectX"); | |
88 | +#endif | |
84 | 89 | } |
85 | 90 | |
86 | 91 | //! @brief 初期化@n |
@@ -91,6 +96,11 @@ | ||
91 | 96 | //! @return 成功:0 失敗:1 |
92 | 97 | int D3DGraphics::InitD3D(WindowControl *WindowCtrl, char *TextureFontFilename, bool fullscreen) |
93 | 98 | { |
99 | +#ifdef ENABLE_DEBUGLOG | |
100 | + //ログに出力 | |
101 | + OutputLog.WriteLog(LOG_INIT, "グラフィック", "DirectX"); | |
102 | +#endif | |
103 | + | |
94 | 104 | D3DPRESENT_PARAMETERS d3dpp; |
95 | 105 | RECT rec; |
96 | 106 |
@@ -136,6 +146,11 @@ | ||
136 | 146 | } |
137 | 147 | } |
138 | 148 | |
149 | +#ifdef ENABLE_DEBUGLOG | |
150 | + //ログに出力 | |
151 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
152 | +#endif | |
153 | + | |
139 | 154 | //テクスチャフォント用画像のファイル名を設定 |
140 | 155 | strcpy(TextureFontFname, TextureFontFilename); |
141 | 156 |
@@ -187,6 +202,11 @@ | ||
187 | 202 | return 1; |
188 | 203 | } |
189 | 204 | |
205 | +#ifdef ENABLE_DEBUGLOG | |
206 | + //ログに出力 | |
207 | + OutputLog.WriteLog(LOG_INIT, "グラフィック", "DirectX(リセット)"); | |
208 | +#endif | |
209 | + | |
190 | 210 | //リソース解放 |
191 | 211 | CleanupD3Dresource(); |
192 | 212 |
@@ -230,6 +250,11 @@ | ||
230 | 250 | return 2; |
231 | 251 | } |
232 | 252 | |
253 | +#ifdef ENABLE_DEBUGLOG | |
254 | + //ログに出力 | |
255 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
256 | +#endif | |
257 | + | |
233 | 258 | return 0; |
234 | 259 | } |
235 | 260 |
@@ -326,6 +351,11 @@ | ||
326 | 351 | //! @return 成功:モデル認識番号(0以上) 失敗:-1 |
327 | 352 | int D3DGraphics::LoadModel(char* filename) |
328 | 353 | { |
354 | +#ifdef ENABLE_DEBUGLOG | |
355 | + //ログに出力 | |
356 | + OutputLog.WriteLog(LOG_LOAD, "モデル", filename); | |
357 | +#endif | |
358 | + | |
329 | 359 | int id = -1; |
330 | 360 | |
331 | 361 | //空いている要素を探す |
@@ -354,7 +384,7 @@ | ||
354 | 384 | D3DXMATERIAL* d3dxMaterials = (D3DXMATERIAL*)pD3DXMtrlBuffer->GetBufferPointer(); |
355 | 385 | int num = nummaterials[id]; |
356 | 386 | pmaterials[id] = new D3DMATERIAL9[num]; |
357 | - if( pmaterials[id] == NULL ) return -3; | |
387 | + if( pmaterials[id] == NULL ) return -1; | |
358 | 388 | |
359 | 389 | //構造体に代入 |
360 | 390 | for( int i=0; i<num; i=i+1 ){ |
@@ -365,6 +395,10 @@ | ||
365 | 395 | //バッファを開放 |
366 | 396 | pD3DXMtrlBuffer->Release(); |
367 | 397 | |
398 | +#ifdef ENABLE_DEBUGLOG | |
399 | + //ログに出力 | |
400 | + OutputLog.WriteLog(LOG_COMPLETE, "", id); | |
401 | +#endif | |
368 | 402 | return id; |
369 | 403 | } |
370 | 404 |
@@ -376,6 +410,14 @@ | ||
376 | 410 | //! @attention それぞれのモデルデータが正しくないか 頂点数が異なる場合、実行に失敗します。 |
377 | 411 | int D3DGraphics::MorphingModel(int idA, int idB) |
378 | 412 | { |
413 | +#ifdef ENABLE_DEBUGLOG | |
414 | + char str[128]; | |
415 | + sprintf(str, "中間データ作成 ID:%d and %d", idA, idB); | |
416 | + | |
417 | + //ログに出力 | |
418 | + OutputLog.WriteLog(LOG_LOAD, "モデル", str); | |
419 | +#endif | |
420 | + | |
379 | 421 | //データが正しいか調べる |
380 | 422 | if( (idA < 0)||((MAX_MODEL -1) < idA) ){ return -1; } |
381 | 423 | if( pmesh[idA] == NULL ){ return -1; } |
@@ -442,6 +484,10 @@ | ||
442 | 484 | pvbN->Unlock(); |
443 | 485 | } |
444 | 486 | |
487 | +#ifdef ENABLE_DEBUGLOG | |
488 | + //ログに出力 | |
489 | + OutputLog.WriteLog(LOG_COMPLETE, "", idN); | |
490 | +#endif | |
445 | 491 | return idN; |
446 | 492 | } |
447 | 493 |
@@ -455,6 +501,11 @@ | ||
455 | 501 | |
456 | 502 | pmesh[id]->Release(); |
457 | 503 | pmesh[id] = NULL; |
504 | + | |
505 | +#ifdef ENABLE_DEBUGLOG | |
506 | + //ログに出力 | |
507 | + OutputLog.WriteLog(LOG_CLEANUP, "モデル", id); | |
508 | +#endif | |
458 | 509 | } |
459 | 510 | } |
460 | 511 |
@@ -469,6 +520,11 @@ | ||
469 | 520 | D3DXIMAGE_INFO info; |
470 | 521 | int MipLevels; |
471 | 522 | |
523 | +#ifdef ENABLE_DEBUGLOG | |
524 | + //ログに出力 | |
525 | + OutputLog.WriteLog(LOG_LOAD, "テクスチャ", filename); | |
526 | +#endif | |
527 | + | |
472 | 528 | //空いている認識番号を探す |
473 | 529 | for(int i=0; i<MAX_TEXTURE; i++){ |
474 | 530 | if( ptextures[i] == NULL ){ |
@@ -505,6 +561,11 @@ | ||
505 | 561 | return -1; |
506 | 562 | } |
507 | 563 | } |
564 | + | |
565 | +#ifdef ENABLE_DEBUGLOG | |
566 | + //ログに出力 | |
567 | + OutputLog.WriteLog(LOG_COMPLETE, "", id); | |
568 | +#endif | |
508 | 569 | return id; |
509 | 570 | } |
510 | 571 |
@@ -545,6 +606,11 @@ | ||
545 | 606 | if( ptextures[id] != NULL ){ |
546 | 607 | ptextures[id]->Release(); |
547 | 608 | ptextures[id] = NULL; |
609 | + | |
610 | +#ifdef ENABLE_DEBUGLOG | |
611 | + //ログに出力 | |
612 | + OutputLog.WriteLog(LOG_CLEANUP, "テクスチャ", id); | |
613 | +#endif | |
548 | 614 | } |
549 | 615 | } |
550 | 616 |
@@ -854,6 +920,11 @@ | ||
854 | 920 | } |
855 | 921 | } |
856 | 922 | |
923 | +#ifdef ENABLE_DEBUGLOG | |
924 | + //ログに出力 | |
925 | + OutputLog.WriteLog(LOG_LOAD, "マップ", "(頂点データ)"); | |
926 | +#endif | |
927 | + | |
857 | 928 | #ifdef BLOCKDATA_GPUMEMORY |
858 | 929 | VERTEXTXTA* pVertices; |
859 | 930 |
@@ -926,6 +997,11 @@ | ||
926 | 997 | } |
927 | 998 | } |
928 | 999 | #endif |
1000 | + | |
1001 | +#ifdef ENABLE_DEBUGLOG | |
1002 | + //ログに出力 | |
1003 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
1004 | +#endif | |
929 | 1005 | } |
930 | 1006 | |
931 | 1007 | //! @brief マップデータを描画 |
@@ -1063,6 +1139,11 @@ | ||
1063 | 1139 | bs = 0; |
1064 | 1140 | |
1065 | 1141 | blockdata = NULL; |
1142 | + | |
1143 | +#ifdef ENABLE_DEBUGLOG | |
1144 | + //ログに出力 | |
1145 | + OutputLog.WriteLog(LOG_CLEANUP, "マップ", "(頂点データ)"); | |
1146 | +#endif | |
1066 | 1147 | } |
1067 | 1148 | |
1068 | 1149 | //! @brief モデルファイルを描画 |
@@ -1601,6 +1682,11 @@ | ||
1601 | 1682 | |
1602 | 1683 | if( hGLRC != NULL ){ wglDeleteContext(hGLRC); } |
1603 | 1684 | |
1685 | +#ifdef ENABLE_DEBUGLOG | |
1686 | + //ログに出力 | |
1687 | + OutputLog.WriteLog(LOG_CLEANUP, "グラフィック", "OpenGL"); | |
1688 | +#endif | |
1689 | + | |
1604 | 1690 | //libjpeg解放 |
1605 | 1691 | jpeg_destroy_decompress(&cinfo); |
1606 | 1692 | } |
@@ -1613,6 +1699,11 @@ | ||
1613 | 1699 | //! @return 成功:0 失敗:1 |
1614 | 1700 | int D3DGraphics::InitD3D(WindowControl *WindowCtrl, char *TextureFontFilename, bool fullscreen) |
1615 | 1701 | { |
1702 | +#ifdef ENABLE_DEBUGLOG | |
1703 | + //ログに出力 | |
1704 | + OutputLog.WriteLog(LOG_INIT, "グラフィック", "OpenGL"); | |
1705 | +#endif | |
1706 | + | |
1616 | 1707 | hWnd = WindowCtrl->GethWnd(); |
1617 | 1708 | |
1618 | 1709 | RECT prc; |
@@ -1684,6 +1775,10 @@ | ||
1684 | 1775 | //フォント名:MS ゴシック サイズ:18 |
1685 | 1776 | SystemFont = CreateFont(18, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, "MS ゴシック"); |
1686 | 1777 | |
1778 | +#ifdef ENABLE_DEBUGLOG | |
1779 | + //ログに出力 | |
1780 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
1781 | +#endif | |
1687 | 1782 | |
1688 | 1783 | //テクスチャフォント用画像のファイル名を設定 |
1689 | 1784 | strcpy(TextureFontFname, TextureFontFilename); |
@@ -1727,8 +1822,18 @@ | ||
1727 | 1822 | //! @return 成功:0 待ち:1 失敗:2 |
1728 | 1823 | int D3DGraphics::ResetD3D(WindowControl *WindowCtrl) |
1729 | 1824 | { |
1825 | +#ifdef ENABLE_DEBUGLOG | |
1826 | + //ログに出力 | |
1827 | + OutputLog.WriteLog(LOG_INIT, "グラフィック", "OpenGL(リセット)"); | |
1828 | +#endif | |
1829 | + | |
1730 | 1830 | hWnd = WindowCtrl->GethWnd(); |
1731 | 1831 | |
1832 | +#ifdef ENABLE_DEBUGLOG | |
1833 | + //ログに出力 | |
1834 | + OutputLog.WriteLog(LOG_ERROR, "", ""); | |
1835 | +#endif | |
1836 | + | |
1732 | 1837 | return 2; |
1733 | 1838 | } |
1734 | 1839 |
@@ -1737,6 +1842,11 @@ | ||
1737 | 1842 | //! @return 成功:モデル認識番号(0以上) 失敗:-1 |
1738 | 1843 | int D3DGraphics::LoadModel(char* filename) |
1739 | 1844 | { |
1845 | +#ifdef ENABLE_DEBUGLOG | |
1846 | + //ログに出力 | |
1847 | + OutputLog.WriteLog(LOG_LOAD, "モデル", filename); | |
1848 | +#endif | |
1849 | + | |
1740 | 1850 | int id = -1; |
1741 | 1851 | FILE *fp; |
1742 | 1852 | char buf[256]; |
@@ -1966,6 +2076,11 @@ | ||
1966 | 2076 | pmodel[id].VertexAry = VertexAry; |
1967 | 2077 | pmodel[id].ColorAry = ColorAry; |
1968 | 2078 | pmodel[id].TexCoordAry = TexCoordAry; |
2079 | + | |
2080 | +#ifdef ENABLE_DEBUGLOG | |
2081 | + //ログに出力 | |
2082 | + OutputLog.WriteLog(LOG_COMPLETE, "", id); | |
2083 | +#endif | |
1969 | 2084 | return id; |
1970 | 2085 | } |
1971 | 2086 |
@@ -1977,8 +2092,14 @@ | ||
1977 | 2092 | //! @attention それぞれのモデルデータが正しくないか 頂点数が異なる場合、実行に失敗します。 |
1978 | 2093 | int D3DGraphics::MorphingModel(int idA, int idB) |
1979 | 2094 | { |
1980 | - return idA; | |
2095 | +#ifdef ENABLE_DEBUGLOG | |
2096 | + char str[128]; | |
2097 | + sprintf(str, "中間データ作成 ID:%d and %d", idA, idB); | |
1981 | 2098 | |
2099 | + //ログに出力 | |
2100 | + OutputLog.WriteLog(LOG_LOAD, "モデル", str); | |
2101 | +#endif | |
2102 | + | |
1982 | 2103 | /* |
1983 | 2104 | //データが正しいか調べる |
1984 | 2105 | if( (idA < 0)||((MAX_MODEL -1) < idA) ){ return -1; } |
@@ -1999,6 +2120,13 @@ | ||
1999 | 2120 | |
2000 | 2121 | return -1; |
2001 | 2122 | */ |
2123 | + | |
2124 | +#ifdef ENABLE_DEBUGLOG | |
2125 | + //ログに出力 | |
2126 | + OutputLog.WriteLog(LOG_ERROR, "", ""); | |
2127 | +#endif | |
2128 | + | |
2129 | + return idA; | |
2002 | 2130 | } |
2003 | 2131 | |
2004 | 2132 | //! @brief モデルファイルを解放 |
@@ -2012,6 +2140,11 @@ | ||
2012 | 2140 | delete pmodel[id].ColorAry; |
2013 | 2141 | delete pmodel[id].TexCoordAry; |
2014 | 2142 | pmodel[id].useflag = false; |
2143 | + | |
2144 | +#ifdef ENABLE_DEBUGLOG | |
2145 | + //ログに出力 | |
2146 | + OutputLog.WriteLog(LOG_CLEANUP, "モデル", id); | |
2147 | +#endif | |
2015 | 2148 | } |
2016 | 2149 | |
2017 | 2150 | //! @brief テクスチャを読み込む |
@@ -2025,6 +2158,11 @@ | ||
2025 | 2158 | char filename2[MAX_PATH]; |
2026 | 2159 | int format = 0; |
2027 | 2160 | |
2161 | +#ifdef ENABLE_DEBUGLOG | |
2162 | + //ログに出力 | |
2163 | + OutputLog.WriteLog(LOG_LOAD, "テクスチャ", filename); | |
2164 | +#endif | |
2165 | + | |
2028 | 2166 | //空いている認識番号を探す |
2029 | 2167 | for(int i=0; i<MAX_TEXTURE; i++){ |
2030 | 2168 | if( ptextures[i].useflag == false ){ |
@@ -2114,6 +2252,11 @@ | ||
2114 | 2252 | //テクスチャ無効 |
2115 | 2253 | glDisable(GL_TEXTURE_2D); |
2116 | 2254 | |
2255 | +#ifdef ENABLE_DEBUGLOG | |
2256 | + //ログに出力 | |
2257 | + OutputLog.WriteLog(LOG_COMPLETE, "", id); | |
2258 | +#endif | |
2259 | + | |
2117 | 2260 | return id; |
2118 | 2261 | |
2119 | 2262 |
@@ -2554,6 +2697,11 @@ | ||
2554 | 2697 | delete ptextures[id].data; |
2555 | 2698 | glDeleteTextures(1 , &(textureobjname[id])); |
2556 | 2699 | ptextures[id].useflag = false; |
2700 | + | |
2701 | +#ifdef ENABLE_DEBUGLOG | |
2702 | + //ログに出力 | |
2703 | + OutputLog.WriteLog(LOG_CLEANUP, "テクスチャ", id); | |
2704 | +#endif | |
2557 | 2705 | } |
2558 | 2706 | |
2559 | 2707 | //! @brief 全ての描画処理を開始 |
@@ -74,6 +74,15 @@ | ||
74 | 74 | //DirectInputを開放 |
75 | 75 | if( pDI != NULL) pDI->Release(); |
76 | 76 | #endif |
77 | + | |
78 | +#ifdef ENABLE_DEBUGLOG | |
79 | + //ログに出力 | |
80 | + #ifdef INPUT_DIRECTINPUT | |
81 | + OutputLog.WriteLog(LOG_CLEANUP, "入力", "DirectInput"); | |
82 | + #else | |
83 | + OutputLog.WriteLog(LOG_CLEANUP, "入力", "WinAPI"); | |
84 | + #endif | |
85 | +#endif | |
77 | 86 | } |
78 | 87 | |
79 | 88 | //! @brief 初期化 |
@@ -81,6 +90,15 @@ | ||
81 | 90 | //! @return 成功:0 失敗:1 |
82 | 91 | int InputControl::InitD3Dinput(WindowControl *WindowCtrl) |
83 | 92 | { |
93 | +#ifdef ENABLE_DEBUGLOG | |
94 | + //ログに出力 | |
95 | + #ifdef INPUT_DIRECTINPUT | |
96 | + OutputLog.WriteLog(LOG_INIT, "入力", "DirectInput"); | |
97 | + #else | |
98 | + OutputLog.WriteLog(LOG_INIT, "入力", "WinAPI"); | |
99 | + #endif | |
100 | +#endif | |
101 | + | |
84 | 102 | //ウインドウハンドルを設定 |
85 | 103 | hWnd = WindowCtrl->GethWnd(); |
86 | 104 |
@@ -109,6 +127,11 @@ | ||
109 | 127 | //カーソルを非表示 |
110 | 128 | ShowCursor(false); |
111 | 129 | |
130 | +#ifdef ENABLE_DEBUGLOG | |
131 | + //ログに出力 | |
132 | + OutputLog.WriteLog(LOG_COMPLETE, "", ""); | |
133 | +#endif | |
134 | + | |
112 | 135 | return 0; |
113 | 136 | } |
114 | 137 |
@@ -39,6 +39,11 @@ | ||
39 | 39 | #pragma comment(lib, "Shlwapi.lib") |
40 | 40 | #endif |
41 | 41 | |
42 | +#ifdef ENABLE_DEBUGLOG | |
43 | + //! ログ出力 | |
44 | + DebugLog OutputLog; | |
45 | +#endif | |
46 | + | |
42 | 47 | //! ステートマシン |
43 | 48 | StateMachine GameState; |
44 | 49 |
@@ -65,6 +70,25 @@ | ||
65 | 70 | SetCurrentDirectory(path); |
66 | 71 | #endif |
67 | 72 | |
73 | +#ifdef ENABLE_DEBUGLOG | |
74 | + //メモ:Windows環境なら、lpCmdLine引数とかGetCommandLine()関数でも取れますけどね・・。 | |
75 | + | |
76 | + //引数を分解 | |
77 | + for(int i=0; i<__argc; i++){ | |
78 | + | |
79 | + //"log"が与えられていたら、ログ出力を有効化 | |
80 | + if( strcmp(__argv[i], "log") == 0 ){ | |
81 | + //ファイル作成 | |
82 | + OutputLog.MakeLog(); | |
83 | + | |
84 | + MainWindow.ErrorInfo("Enable Debug Log..."); | |
85 | + } | |
86 | + } | |
87 | + | |
88 | + //ログに出力 | |
89 | + OutputLog.WriteLog(LOG_CHECK, "起動", "エントリーポイント開始"); | |
90 | +#endif | |
91 | + | |
68 | 92 | //設定ファイル読み込み |
69 | 93 | if( GameConfig.LoadFile("config.dat") == 1 ){ |
70 | 94 | MainWindow.ErrorInfo("config data open failed"); |
@@ -94,6 +118,11 @@ | ||
94 | 118 | InitScreen(&Opening, &MainMenu, &Briefing, &MainGame, &Result); |
95 | 119 | |
96 | 120 | |
121 | +#ifdef ENABLE_DEBUGLOG | |
122 | + //ログに出力 | |
123 | + OutputLog.WriteLog(LOG_CHECK, "起動", "メインループ"); | |
124 | +#endif | |
125 | + | |
97 | 126 | unsigned int framecnt = 0; |
98 | 127 | |
99 | 128 | for(int flag = 0; flag != -1; flag = MainWindow.CheckMainLoop()){ |
@@ -108,5 +137,9 @@ | ||
108 | 137 | } |
109 | 138 | } |
110 | 139 | |
140 | +#ifdef ENABLE_DEBUGLOG | |
141 | + //ログに出力 | |
142 | + OutputLog.WriteLog(LOG_CHECK, "終了", "エントリーポイント終了"); | |
143 | +#endif | |
111 | 144 | return 0; |
112 | 145 | } |
\ No newline at end of file |