changeset 18998:66b191c02555 draft

(svn r23854) -Codechange: make it easier to put random debug stuff into the random log
author rubidium <rubidium@openttd.org>
date Thu, 26 Jan 2012 17:24:56 +0000
parents 7e904d658799
children 081eb943326c
files src/core/random_func.cpp src/core/random_func.hpp src/debug.cpp src/debug.h
diffstat 4 files changed, 25 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/src/core/random_func.cpp
+++ b/src/core/random_func.cpp
@@ -69,11 +69,7 @@
 uint32 DoRandom(int line, const char *file)
 {
 	if (_networking && (!_network_server || (NetworkClientSocket::IsValidID(0) && NetworkClientSocket::Get(0)->status != NetworkClientSocket::STATUS_INACTIVE))) {
-		static FILE *f = FioFOpenFile("random-out.log", "wb", AUTOSAVE_DIR);
-		if (f != NULL) {
-			fprintf(f, "%08x; %02x; %04x; %02x; %s:%d\n", _date, _date_fract, _frame_counter, (byte)_current_company, file, line);
-			fflush(f);
-		}
+		DEBUG(random, 0, "%08x; %02x; %04x; %02x; %s:%d", _date, _date_fract, _frame_counter, (byte)_current_company, file, line);
 	}
 
 	return _random.Next();
--- a/src/core/random_func.hpp
+++ b/src/core/random_func.hpp
@@ -17,19 +17,6 @@
 	#define Random OTTD_Random
 #endif /* __APPLE__ */
 
-/**************
- * Warning: DO NOT enable this unless you understand what it does
- *
- * If enabled, in a network game all randoms will be dumped to the
- *  stdout if the first client joins (or if you are a client). This
- *  is to help finding desync problems.
- *
- * Warning: DO NOT enable this unless you understand what it does
- **************/
-
-//#define RANDOM_DEBUG
-
-
 /**
  * Structure to encapsulate the pseudo random number generators.
  */
--- a/src/debug.cpp
+++ b/src/debug.cpp
@@ -39,6 +39,9 @@
 int _debug_gamelog_level;
 int _debug_desync_level;
 int _debug_console_level;
+#ifdef RANDOM_DEBUG
+int _debug_random_level;
+#endif
 
 uint32 _realtime_tick = 0;
 
@@ -64,6 +67,9 @@
 	DEBUG_LEVEL(gamelog),
 	DEBUG_LEVEL(desync),
 	DEBUG_LEVEL(console),
+#ifdef RANDOM_DEBUG
+	DEBUG_LEVEL(random),
+#endif
 	};
 #undef DEBUG_LEVEL
 
@@ -85,7 +91,21 @@
 		return;
 	}
 #endif /* ENABLE_NETWORK */
-	if (strcmp(dbg, "desync") != 0) {
+	if (strcmp(dbg, "desync") == 0) {
+		static FILE *f = FioFOpenFile("commands-out.log", "wb", AUTOSAVE_DIR);
+		if (f == NULL) return;
+
+		fprintf(f, "%s%s\n", GetLogPrefix(), buf);
+		fflush(f);
+#ifdef RANDOM_DEBUG
+	} else if (strcmp(dbg, "random") == 0) {
+		static FILE *f = FioFOpenFile("random-out.log", "wb", AUTOSAVE_DIR);
+		if (f == NULL) return;
+
+		fprintf(f, "%s\n", buf);
+		fflush(f);
+#endif
+	} else {
 #if defined(WINCE)
 		/* We need to do OTTD2FS twice, but as it uses a static buffer, we need to store one temporary */
 		TCHAR tbuf[512];
@@ -98,12 +118,6 @@
 		NetworkAdminConsole(dbg, buf);
 #endif /* ENABLE_NETWORK */
 		IConsoleDebug(dbg, buf);
-	} else {
-		static FILE *f = FioFOpenFile("commands-out.log", "wb", AUTOSAVE_DIR);
-		if (f == NULL) return;
-
-		fprintf(f, "%s%s\n", GetLogPrefix(), buf);
-		fflush(f);
 	}
 }
 
--- a/src/debug.h
+++ b/src/debug.h
@@ -51,6 +51,9 @@
 	extern int _debug_gamelog_level;
 	extern int _debug_desync_level;
 	extern int _debug_console_level;
+#ifdef RANDOM_DEBUG
+	extern int _debug_random_level;
+#endif
 
 	void CDECL debug(const char *dbg, const char *format, ...) WARN_FORMAT(2, 3);
 #endif /* NO_DEBUG_MESSAGES */