Add "command" debug category to log commands

This commit is contained in:
Jonathan G Rennison
2023-05-23 21:28:01 +01:00
parent 8bb23e07ba
commit a25e674f06
3 changed files with 33 additions and 11 deletions

View File

@@ -644,24 +644,15 @@ void ClearCommandLog()
_command_log_aux.Reset(); _command_log_aux.Reset();
} }
static void DumpSubCommandLog(char *&buffer, const char *last, const CommandLog &cmd_log, const unsigned int count) static void DumpSubCommandLogEntry(char *&buffer, const char *last, const CommandLogEntry &entry)
{ {
unsigned int log_index = cmd_log.next;
for (unsigned int i = 0 ; i < count; i++) {
if (log_index > 0) {
log_index--;
} else {
log_index = (uint)cmd_log.log.size() - 1;
}
const CommandLogEntry &entry = cmd_log.log[log_index];
auto fc = [&](CommandLogEntryFlag flag, char c) -> char { auto fc = [&](CommandLogEntryFlag flag, char c) -> char {
return entry.log_flags & flag ? c : '-'; return entry.log_flags & flag ? c : '-';
}; };
YearMonthDay ymd; YearMonthDay ymd;
ConvertDateToYMD(entry.date, &ymd); ConvertDateToYMD(entry.date, &ymd);
buffer += seprintf(buffer, last, " %3u | %4i-%02i-%02i, %2i, %3i", i, ymd.year, ymd.month + 1, ymd.day, entry.date_fract, entry.tick_skip_counter); buffer += seprintf(buffer, last, "%4i-%02i-%02i, %2i, %3i", ymd.year, ymd.month + 1, ymd.day, entry.date_fract, entry.tick_skip_counter);
if (_networking) { if (_networking) {
buffer += seprintf(buffer, last, ", %08X", entry.frame_counter); buffer += seprintf(buffer, last, ", %08X", entry.frame_counter);
} }
@@ -686,6 +677,22 @@ static void DumpSubCommandLog(char *&buffer, const char *last, const CommandLog
buffer += seprintf(buffer, last, " [%s]", entry.text.c_str()); buffer += seprintf(buffer, last, " [%s]", entry.text.c_str());
break; break;
} }
}
static void DumpSubCommandLog(char *&buffer, const char *last, const CommandLog &cmd_log, const unsigned int count)
{
unsigned int log_index = cmd_log.next;
for (unsigned int i = 0 ; i < count; i++) {
if (log_index > 0) {
log_index--;
} else {
log_index = (uint)cmd_log.log.size() - 1;
}
buffer += seprintf(buffer, last, " %3u | ", i);
const CommandLogEntry &entry = cmd_log.log[log_index];
DumpSubCommandLogEntry(buffer, last, entry);
buffer += seprintf(buffer, last, "\n"); buffer += seprintf(buffer, last, "\n");
} }
@@ -876,6 +883,16 @@ Money GetAvailableMoneyForCommand()
return Company::Get(company)->money; return Company::Get(company)->money;
} }
static void DebugLogCommandLogEntry(const CommandLogEntry &entry)
{
if (_debug_command_level <= 0) return;
char buffer[256];
char *b = buffer;
DumpSubCommandLogEntry(b, lastof(buffer), entry);
debug_print("command", buffer);
}
static void AppendCommandLogEntry(const CommandCost &res, TileIndex tile, uint32 p1, uint32 p2, uint64 p3, uint32 cmd, CommandLogEntryFlag log_flags, const char *text) static void AppendCommandLogEntry(const CommandCost &res, TileIndex tile, uint32 p1, uint32 p2, uint64 p3, uint32 cmd, CommandLogEntryFlag log_flags, const char *text)
{ {
if (res.Failed()) log_flags |= CLEF_CMD_FAILED; if (res.Failed()) log_flags |= CLEF_CMD_FAILED;
@@ -892,6 +909,7 @@ static void AppendCommandLogEntry(const CommandCost &res, TileIndex tile, uint32
current.current_company == _current_company && current.local_company == _local_company) { current.current_company == _current_company && current.local_company == _local_company) {
current.log_flags |= log_flags | CLEF_TWICE; current.log_flags |= log_flags | CLEF_TWICE;
current.log_flags &= ~CLEF_ONLY_SENDING; current.log_flags &= ~CLEF_ONLY_SENDING;
DebugLogCommandLogEntry(current);
return; return;
} }
} }
@@ -905,6 +923,7 @@ static void AppendCommandLogEntry(const CommandCost &res, TileIndex tile, uint32
} }
cmd_log.log[cmd_log.next] = CommandLogEntry(tile, p1, p2, p3, cmd, log_flags, std::move(str)); cmd_log.log[cmd_log.next] = CommandLogEntry(tile, p1, p2, p3, cmd, log_flags, std::move(str));
DebugLogCommandLogEntry(cmd_log.log[cmd_log.next]);
cmd_log.next = (cmd_log.next + 1) % cmd_log.log.size(); cmd_log.next = (cmd_log.next + 1) % cmd_log.log.size();
cmd_log.count++; cmd_log.count++;
} }

View File

@@ -65,6 +65,7 @@ int _debug_yapfdesync_level;
int _debug_console_level; int _debug_console_level;
int _debug_linkgraph_level; int _debug_linkgraph_level;
int _debug_sound_level; int _debug_sound_level;
int _debug_command_level;
#ifdef RANDOM_DEBUG #ifdef RANDOM_DEBUG
int _debug_random_level; int _debug_random_level;
int _debug_statecsum_level; int _debug_statecsum_level;
@@ -102,6 +103,7 @@ struct DebugLevel {
DEBUG_LEVEL(console), DEBUG_LEVEL(console),
DEBUG_LEVEL(linkgraph), DEBUG_LEVEL(linkgraph),
DEBUG_LEVEL(sound), DEBUG_LEVEL(sound),
DEBUG_LEVEL(command),
#ifdef RANDOM_DEBUG #ifdef RANDOM_DEBUG
DEBUG_LEVEL(random), DEBUG_LEVEL(random),
DEBUG_LEVEL(statecsum), DEBUG_LEVEL(statecsum),

View File

@@ -53,6 +53,7 @@ extern int _debug_yapfdesync_level;
extern int _debug_console_level; extern int _debug_console_level;
extern int _debug_linkgraph_level; extern int _debug_linkgraph_level;
extern int _debug_sound_level; extern int _debug_sound_level;
extern int _debug_command_level;
#ifdef RANDOM_DEBUG #ifdef RANDOM_DEBUG
extern int _debug_random_level; extern int _debug_random_level;
extern int _debug_statecsum_level; extern int _debug_statecsum_level;