From 0093ebe3a7ab00967a94f16e5456c2bd5f36a60a Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Wed, 28 Dec 2022 02:17:48 +0000 Subject: [PATCH] Debug: Add engine variant ID and extra flags to debug info --- src/table/newgrf_debug_data.h | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/table/newgrf_debug_data.h b/src/table/newgrf_debug_data.h index 9a777c2655..e79baa25c4 100644 --- a/src/table/newgrf_debug_data.h +++ b/src/table/newgrf_debug_data.h @@ -362,9 +362,13 @@ class NIHVehicle : public NIHelper { } if (show_engine) { - seprintf(buffer, lastof(buffer), " Engine: %u", v->engine_type); - output.print(buffer); const Engine *e = Engine::GetIfValid(v->engine_type); + char *b = buffer + seprintf(buffer, lastof(buffer), " Engine: %u", v->engine_type); + if (e->info.variant_id != INVALID_ENGINE) { + b += seprintf(b, lastof(buffer), ", variant of: %u", e->info.variant_id); + } + output.print(buffer); + if (e != nullptr) { seprintf(buffer, lastof(buffer), " Callbacks: 0x%X, CB36 Properties: 0x" OTTD_PRINTFHEX64, e->callbacks_used, e->cb36_properties_used); @@ -471,6 +475,29 @@ class NIHVehicle : public NIHelper { e->u.road.roadtype, (static_cast(1) << e->u.road.roadtype), rti->powered_roadtypes); output.print(buffer); } + + output.register_next_line_click_flag_toggle(4); + if (output.flags & 4) { + seprintf(buffer, lastof(buffer), " [-] Extra Engine Flags:\n"); + output.print(buffer); + auto print_bit = [&](ExtraEngineFlags flag, const char *name) { + if ((e->info.extra_flags & flag) != ExtraEngineFlags::None) { + seprintf(buffer, lastof(buffer), " %s\n", name); + output.print(buffer); + } + }; + print_bit(ExtraEngineFlags::NoNews, "NoNews"); + print_bit(ExtraEngineFlags::NoPreview, "NoPreview"); + print_bit(ExtraEngineFlags::JoinPreview, "JoinPreview"); + print_bit(ExtraEngineFlags::SyncReliability, "SyncReliability"); + } else { + seprintf(buffer, lastof(buffer), " [+] Extra Engine Flags: %c%c%c%c", + (e->info.extra_flags & ExtraEngineFlags::NoNews) != ExtraEngineFlags::None ? 'n' : '-', + (e->info.extra_flags & ExtraEngineFlags::NoPreview) != ExtraEngineFlags::None ? 'p' : '-', + (e->info.extra_flags & ExtraEngineFlags::JoinPreview) != ExtraEngineFlags::None ? 'j' : '-', + (e->info.extra_flags & ExtraEngineFlags::SyncReliability) != ExtraEngineFlags::None ? 's' : '-'); + output.print(buffer); + } } }